我有这个代码:
#include <stdio.h>
int main()
{
int arr[10] = {0};
int *p1_arr = arr;
int (*p2_arr)[10] = arr; // Line 7, Shows Warning here
...
return 0;
}
在gcc
using编译时gcc -g -Wall LengthofArray.c
,它显示以下警告:
gcc: LengthOfArray.c:7: [Warning] assignment from incompatible
pointer type [enabled by default]
我的问题是如果int (*p2_arr)[10]
是指向大小为 10 的数组的指针,那么为什么编译器会显示此警告?
那么正确的方法是什么?
我在 Windows 7 32 位 (DevC++) 上使用了 gcc 4.7.2
,还检查了 SLES 10.3 x86_64 上的 gcc 4.1.2