gpt4 book ai didi

c++ - int(*a)的解释[3]

转载 作者:IT老高 更新时间:2023-10-28 21:37:17 25 4
gpt4 key购买 nike

在 C 语言中使用数组和指针时,人们很快就会发现它们绝不是等价的,尽管乍一看似乎是等价的。我知道 L 值和 R 值的差异。不过,最近我试图找出可以与二维数组结合使用的指针类型,即

int foo[2][3];
int (*a)[3] = foo;

但是,尽管 *[] 有常规的运算符优先级规则,但我就是不知道编译器如何“理解” a 的类型定义.相反,如果我使用 typedef,问题就会变得简单得多:

int foo[2][3];
typedef int my_t[3];
my_t *a = foo;

最后,有人可以回答我关于编译器如何读取术语 int (*a)[3] 的问题吗? int a[3] 很简单,int *a[3] 也很简单。但是,为什么不是 int *(a[3])

编辑:当然,我指的是“typedef”而不是“typecast”(这只是一个错字)。

最佳答案

每当您对复杂的声明有疑问时,可以使用 cdecl类 Unix 系统中的工具:

[/tmp]$ cdecl
Type `help' or `?' for help
cdecl> explain int (*a)[10];
declare a as pointer to array 10 of int

编辑:

此工具还有一个在线版本here .

感谢 Tiberiu Ana 和 gf

关于c++ - int(*a)的解释[3],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2250397/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com