指向数组语法的指针

use*_*164 0 c c++ arrays pointers pointer-to-pointer

我有一个关于数组指针语法的问题。好吧,我们知道数组本身就是指针(我们的大学教授说的)所以为什么当我们用另一个指针(将是指向指针的指针)指向它们时,我们使用以下语法:

int array[10]; 
int *pointer = array;
Run Code Online (Sandbox Code Playgroud)

而不是这种语法:

int array[10];
int **pointer = &array;
Run Code Online (Sandbox Code Playgroud)

虽然我知道这使用 malloc 是正确的,但为什么不以正常方式,这是编译器或语法的事情还是我在其他地方错了??

eml*_*lai 5

告诉你的教授他们错了。数组不是指针。数组可以衰变为指针,但他们没有指针。

int* pointer = array;声明一个指向 中第一个元素的指针array

int** pointer = &array;是不正确的。如所提到的通过jschultz410中的注释的类型&array int**,它是int (*)[10]又名的指针的10个整数的数组,其不能衰变int**