gpt4 book ai didi

c - gdb 中 c 数组名称的类型

转载 作者:太空宇宙 更新时间:2023-11-04 07:34:14 24 4
gpt4 key购买 nike

int arr[4][2][3][6];

运行gdb检查arr的类型(数组名)

(gdb) wha arr
type = int [4][2][3][6]

据我所知,在表达式中(除了用作“sizeof”或“&”的操作数)时,编译器将数组名称视为指向数组第一个元素的指针。所以,我期待 type = int (*)[2][3][6]

有趣的是,如果我检查这个:

(gdb) wha arr+1
type = int (*)[2][3][6]

你看到输出符合预期!这里我想知道它只是gdb的一种显示风格还是数组名的类型真的是int [4][2][3][6]

顺便说一句,我猜到为什么 gdb 说类型是 int [4][2][3][6],你看,

(gdb) wha &arr
type = int (*)[4][2][3][6]

所以,&arr 是指向 int [4][2][3][6] 的指针,那么 arr 应该是 int [4][2 ][3][6]....

最佳答案

当您在需要指针的上下文中使用时,编译器会将名称用作指向第一个元素的指针。但是 gdb 关于您传递的符号的实际类型是正确的。

arr+1 是 &arr[1],它是指向所示的 3 维数组的指针。

arr 本身就是一个数组;即 4 维数组。

关于c - gdb 中 c 数组名称的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10392919/

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