声明'(int *)ptr [N]'在C中的含义是什么?

时间:2013-11-05 07:04:22

标签: c arrays pointers declaration

当我试图将括号强调为(int *) ptr[N];中的指针数组的声明时,我发现了一个令人费解的数组。

GCC C编译器说:

error: ptr undeclared (first use in this function)

有人可以解释错误的根源吗?

4 个答案:

答案 0 :(得分:3)

这很简单:变量ptr尚未声明。不,(int *) ptr[N]; 不是一个声明,它是数组下标表达式的类型转换。

如果你想要一个指针数组,你应该做

int *ptr[N];

答案 1 :(得分:2)

它将数组ptr N 元素转换为整数指针。

错误本身指向永远不会声明ptr。你忘记或删除了我这样的错误:

int *ptr[123];

关于N它似乎是一个常量定义的常量,例如像这样:

#define N 42

答案 2 :(得分:1)

也许你可以这样做

typedefine int* INT_PTR;
INT_PTR ptr[N];

答案 3 :(得分:1)

我认为编译器会将ptr [N]转换为类型(int *),就像

一样
    int a;
    double b;
    b = (double)a;

所以(int *)ptr [N] dosen已经离开了值,你之前从未声明过ptr。 那么gcc编译器会告诉你ptr unclared。