【发布时间】:2013-07-24 22:21:38
【问题描述】:
int (*a)[5];
我们如何初始化一个指向上面显示的 5 个整数数组的指针。
下面的表述正确吗?
int (*a)[3]={11,2,3,5,6};
【问题讨论】:
-
C 中的“指向数组的指针”从来没有任何用处。它只是模糊了代码,没有任何好处。只需声明和初始化数组,并使用指向其元素类型的指针。
-
@LeeDanielCrocker:这不是真的——指向数组的指针是动态分配多维数组的最有效方式(如
int (*a)[5] = malloc(nrows * sizeof *a);) -
是的,这很简单,但这仅适用于您在编译时知道内部维度的情况,而不适用于更一般的情况。
-
@LeeDanielCrocker:同样适用于 VLA:
size_t cols; ...; int (*a)[cols] = malloc( nrows * sizeof *a );。这也是二维数组表达式在传递给函数时衰减的内容。 OP 的用法不正确,但这并不意味着它们毫无用处。
标签: c arrays pointers initialization