Don*_*ild 4 c arrays gcc pointer-to-array
我有这个代码:
#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使用时gcc -g -Wall LengthofArray.c,它显示以下警告:
gcc: LengthOfArray.c:7: [Warning] assignment from incompatible 
                         pointer type [enabled by default]
我的问题是if int (*p2_arr)[10]是一个指向大小为10的数组的指针,那么为什么编译器显示这个警告?
那么正确的方法是什么呢?
我在Windows 7 32位(DevC++)上使用了gcc 4.7.2,
并在SLES 10.3 x86_64上检查了gcc 4.1.2
...如果int(*p2_arr)[10]是指向大小为10的数组的指针 ...
作为p2_arr指向大小为10的数组,您需要指定一个大小为10的数组的地址:
int (*p2_arr)[10] = &arr;