以下声明有何不同:

int* arr1[8];
int (*arr2)[8];
int *(arr3[8]);

理解更复杂的声明的一般规则是什么?

推荐答案

int* arr[8]; // An array of int pointers.
int (*arr)[8]; // A pointer to an array of integers

第三个和第一个一样.

一般规则是operator precedence.随着函数指针的出现,它可能会变得更加复杂.

C++相关问答推荐

无根生成树中的同步领导人选举宣布多个获胜者

-O and -wrap的行为

错误:八进制常数中的数字9无效

librsvg rsvg_handle_get_dimensions获取像素大小与浏览器中的渲染大小没有不同

如何启用ss(另一个调查套接字的实用程序)来查看Linux主机上加入的多播组IP地址?

为什么这个C程序代码会产生以下结果?

如何正确地索引C中的 struct 指针数组?

Rust FFI--如何用给出返回引用的迭代器包装C风格的迭代器?

使用scanf在C中读取和存储文件中的值

如何在POSIX-UEFI中获得输入?

接受任何参数的函数指针是否与接受不同参数的函数兼容

如何使用libgpio(d)为Raspberry Pi编译C程序?

对于STM32微控制器,全局偏移表.get和.Got.plt必须为零初始化

在C中使用无符号整数模拟有符号整数

当我在34mb的.mp4文件中使用FREAD时,我得到了一个分段错误,我如何解决它?

C中的char**v*char[]

我编写这段代码是为了判断一个数字是质数、阿姆斯特朗还是完全数,但由于某种原因,当我使用大数时,它不会打印出来

Linux Posix消息队列

如何在C中计算包含递增和递减运算符的逻辑表达式?

传递参数:C 和 C++ 中 array 与 *&array 和 &array[0] 的区别