当我试图用括号强调指针数组的声明时,我发现了一个令人费解的数组,如(int *) ptr[N];
.
GCC C 编译器说:
error: ptr undeclared (first use in this function)
.
任何人都可以解释错误的起源吗?
当我试图用括号强调指针数组的声明时,我发现了一个令人费解的数组,如(int *) ptr[N];
.
GCC C 编译器说:
error: ptr undeclared (first use in this function)
.
任何人都可以解释错误的起源吗?
很简单:变量ptr
还没有被声明。不,不是(int *) ptr[N];
声明,它是数组下标表达式的类型转换。
如果你想要一个指针数组,你应该这样做
int *ptr[N];
它将数组的第N个元素ptr
转换为整数指针。
错误本身指出ptr
从未声明过。您忘记或删除了我的错误,如下所示:
int *ptr[123];
关于N
它似乎是一个通常定义的常量,例如:
#define N 42
也许你可以这样做
typedefine int* INT_PTR;
INT_PTR ptr[N];
我认为编译器会将 ptr[N] 转换为类型(int *),就像
int a;
double b;
b = (double)a;
所以 (int *)ptr[N] dosen 的值是左值,并且你之前从未声明过 ptr。然后 gcc 编译器会告诉你 ptr 未声明。