Kos*_*Kos 23
正确答案是:
int* arr[MAX];
int* (*pArr)[MAX] = &arr;
Run Code Online (Sandbox Code Playgroud)
要不就:
int* arr [MAX];
typedef int* arr_t[MAX];
arr_t* pArr = &arr;
Run Code Online (Sandbox Code Playgroud)
最后一部分读作"pArr是指向int类型指针的MAX元素数组的指针".
在C中,数组的大小存储在类型中,而不是存储在值中.如果你想让这个指针正确地处理数组上的指针运算(如果你想用它们制作一个二维数组并使用这个指针迭代它),你 - 通常不幸的是 - 需要有数组嵌入指针类型的大小.
幸运的是,既然C99和VLA(甚至可能早于C99?)MAX可以在运行时指定,而不是编译时.
Jas*_*son 17
应该只是:
int* array[SIZE];
int** val = array;
Run Code Online (Sandbox Code Playgroud)
array由于数组在赋值运算符的右侧衰减为隐式指针,因此无需使用地址运算符.