Я изменяю существующий код для нового проекта. Мне было поручено удалить динамическое выделение памяти и использовать статическое объявление.Как получить доступ к двумерному массиву неизвестного размера с помощью указателя на массив
Существует переменная arrp, ранее она представляла собой двойной указатель, на который будет выделяться память с помощью malloc, и к ней будет обращаться как 2D-массив.
Теперь я изменил его как указатель на массив i.e: char (* arrp) [];
Размер 2D-массива, на который указывают точки прихода, будет известен только во время выполнения. Моя проблема в том, если размер не объявлен компилятор бросает ошибку ('символ (*) []: неизвестен размер)
Пожалуйста, обратитесь следующий код, я сделал что-то вроде этого
char (*arrp)[]; //This will be from different module,
//I have declared as local variable for our reference
char (*parr)[2];
char arr[3][2];
parr = &(arr[0]);
arrp = (char (*)[])&(arr[0]);
//inside loops for i, j
...
printf("%c",parr[i][j]); // This works fine
printf("%c",arrp[i][j]); // Error :'char (*)[]' : unknown size)
....
//Some code
Это не возможно получить размер массива при объявлении arrp. Есть ли способ устранить эту ошибку?
Извините, что забыл упомянуть, этот проект находится в C – Cks
Какая версия C? – Christoffer
Приложение построено для работы с различными компиляторами, такими как GCC 2.9.5, 3.4 (не уверен в этом), компилятор VC++ и т. Д. – Cks