c - 指向指针数组的指针

标签 c arrays pointers

我有一个 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/

相关文章:

c - 访问静态变量值

python - numpy 除法的问题

c - 重新分配后打印字符串数组时遇到问题?

c - C 中的通用列表包含垃圾值

c++ 使用 const char* 参数类型调用函数的最佳方法

c - 分配大块时 Hoard 性能严重下降

c - 堆栈中的溢出技术

c - 有没有办法用 C ping 一个特定的 IP 地址?

arrays - 在 Go 中解码 JSON 数组

C++指针协变