我正在为一个新项目修改现有代码。我被指示删除动态内存分配并使用静态声明。
有一个变量 arrp,之前它是一个双指针,将使用 malloc 为其分配内存,并将作为 2D 数组访问。
现在我已将其更改为指向数组的指针,即:char (*arrp)[];
arrp 指向的二维数组的大小只有在运行时才能知道。我的问题是,如果未声明大小,编译器会抛出错误('char (*)[]' : unknown size)
请参考以下代码,我做了这样的事情
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 时无法获取数组的大小。有没有办法消除这个错误?