私はこのコードを持っています:
#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]
私の質問は、int (*p2_arr)[10]
がサイズ 10 の配列へのポインタである場合、コンパイラがこの警告を表示するのはなぜですか?
また、正しい方法は何ですか?
Windows 7 32 ビット (DevC++)
で gcc 4.7.2 を使用し、SLES 10.3 x86_64 で gcc 4.1.2 もチェックしました。