c - 初始化 "a pointer to an array of integers"

标签 c arrays pointers initialization

 int (*a)[5];

我们如何初始化一个指向上面所示的 5 个整数数组的指针。

下面的表述是否正确?

int (*a)[3]={11,2,3,5,6}; 

最佳答案

假设您有一个长度为 5 的 int 数组,例如

int x[5];

然后你可以做 a = &x;

 int x[5] = {1};
 int (*a)[5] = &x;

要访问数组元素,您:(*a)[i] (== (*(&x))[i]== (* &x)[i] == x[i]) 需要括号,因为 [] 运算符的优先级高于 *。 (一个常见的错误是使用 *a[i] 访问数组元素)。

理解你问的是编译时错误:

int (*a)[3] = {11, 2, 3, 5, 6}; 

这是不正确的,也是类型不匹配,因为 {11,2,3,5,6} 可以分配给 int a[5]; 并且您正在分配给 int (*a)[3]

此外,

你可以为一维做一些事情:

int *why = (int p[2]) {1,2};

类似地,对于二维试试这个(感谢@caf):

int (*a)[5] = (int p[][5]){ { 1, 2, 3, 4, 5 } , { 6, 7, 8, 9, 10 } };

关于c - 初始化 "a pointer to an array of integers",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17850998/

相关文章:

c - printf中的前自增和后自增

c - return 关键字如何在主函数或任何用户定义的函数中工作?

c - 如何在 C 语言的二叉搜索树中正确插入/删除?

javascript - 基于数组创建变量

javascript - 如何在 Highcharts 上显示数组中的数组? [JS]

C++ 文件输入/输出

C/C++ 中的 C++ 引用和常量指针

在 C 中裁剪 PGM

c - memcpy(),size参数的值应该是多少?

检查 malloc 的指针是否为 NULL