以下声明有何不同:

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++相关问答推荐

ARM上的Modulo Sim Aarch 64(NEON)

问关于C中的指针和数组

变量>;-1如何在C中准确求值?

我无法让LLDB正确运行我的可执行文件

带有sigLongjMP中断I/O的异常处理程序

将 struct 传递给函数

C中的FREE函数正在触发断点

我的C函数起作用了,但我不确定为什么

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

Fprintf正在写入多个 struct 成员,并且数据过剩

OSDev--双缓冲重启系统

C:Assignment中的链表赋值从指针目标类型中丢弃‘const’限定符

我正在try 将QSORT算法实现为C++中的泛型函数

使用正则表达式获取字符串中标记的开始和结束

为什么我的半数组测试和奇数组测试不起作用?(我使用Assert进行调试)

*S=0;正在优化中.可能是GCC 13号虫?或者是一些不明确的行为?

中位数和众数不正确

当 n 是我们从用户那里获得的整数时,创建 n 个 struct 参数

GnuCobol 使用 double 类型的参数调用 C 函数

Clang 是否为内联汇编生成了错误的代码?