我有一个 int 指针数组 int* arr[MAX];
我想将它的地址存储在另一个变量中。如何定义指向指针数组的指针?即:
int* arr[MAX];
int (what here?) val = &arr;
最佳答案
正确答案是:
int* arr[MAX];
int* (*pArr)[MAX] = &arr;
或者只是:
int* arr [MAX];
typedef int* arr_t[MAX];
arr_t* pArr = &arr;
最后一部分读作“pArr 是指向 INT 类型指针的 MAX 元素数组的指针”。
在 C 中,数组的大小存储在类型中,而不是值中。如果您希望此指针正确处理数组上的指针运算(以防您希望从这些数组中创建一个二维数组并使用此指针对其进行迭代),您 - 通常不幸的是 - 需要将数组大小嵌入到指针类型中。
幸运的是,由于 C99 和 VLA(甚至可能早于 C99?)MAX 可以在运行时而不是编译时指定。
关于c - 指向指针数组的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6130712/