指向C中的数组

Kev*_* Wu 3 c arrays pointers

你怎么解释下面的代码行?

int (*arrayABC)[10];
Run Code Online (Sandbox Code Playgroud)

在我的教科书中,它说我们有一个指向整数数组第0个元素的指针.

但是,我不太明白这一点.

我的解释:我们有一些变量,它的值是一些地址.该地址是UNNAMED整数数组的第0个元素的地址.基本上我们有一个指向第0个元素的指针.

为什么那么指针指向一个指针呢?

M.M*_*M.M 9

这是一个指向数组的指针.它不是指向指针的指针.数组和指针是不同的.阵列具有一个地址,但阵列不是一个地址.数组是一系列连续的元素.

这个指针指向整个数组,而不仅仅指向第一个元素,就像float *指向整个浮点而不仅仅指向第一个字节一样.

如果您有例如:

int foo[10];
int (*arrayABC)[10] = &foo;
Run Code Online (Sandbox Code Playgroud)

然后表达式(*arrayABC)foo相同.例如foo[3](*arrayABC)[3].