gpt4 book ai didi

c - `a` 和 `*a` 之间有什么区别,其中 `a` 表示二维数组?

转载 作者:太空狗 更新时间:2023-10-29 15:13:50 27 4
gpt4 key购买 nike

指针和数组彼此密切相关,因此,如果我们有一个二维数组

int a[3][4]={
1,2,3,4,
5,6,7,8,
9,10,11,12};

两者都是

printf("%p\n", a);

printf("%p\n", *a);

打印相同的地址。我的理解是 a 可能指向 a 的基地址,而 *a 指向两个的第一个子数组-维数组 a.

那么,两者有什么区别呢?

最佳答案

What i get is may be a is pointing to the base address of a while *a is pointing to the first sub-array of two-dimensional array a.

差不多就这样了。

    当您将
  • a 传递给 printf< 时,
  • a 会自行衰减为指向其第一个子数组的指针(类型为 int(*)[3])/。
  • *a 指定 a 的第一个子数组(int[3] 类型),并衰减为指针(int*) 到该子数组的第一个元素。

最后,它们共享相同的值,因为递归地,数组与其第一个元素具有相同的地址。

关于c - `a` 和 `*a` 之间有什么区别,其中 `a` 表示二维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30593005/

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