gpt4 book ai didi

c - 关于C : pointer and Two-dimensional array

转载 作者:行者123 更新时间:2023-11-30 21:32:17 27 4
gpt4 key购买 nike

问题是这样的:程序的输出是什么?

#include<stdio.h>
int main()
{
int A[2][10]={{1,2,3,4,5,6,7,8,9,10},{11,12,13,14,15,16,17,18,19,20} };
int (*v)[10]=A;

printf("**v=%d\n",**v);
printf("**(v+1)=%d\n",**(v+1));
printf("*(*v+1)=%d\n",*(*v+1));
printf("*(v[0]+1)=%d\n",*(v[0]+1));
printf("*(v[1])=%d\n",*(v[1]));
}

输出:

**v=1
**(v+1)=11
*(*v+1)=2
*(v[0]+1)=2
*(v[1])=11

特别是,我不太清楚*v是如何将数组A分成10份的,请告诉我每个输出的原因。谢谢!

最佳答案

有一个概念叫做 array decay在上类。另外,将每个定义传递给 cdecl .

第二行是

declare v as pointer to array 10 of int

因此它是一个指向 10 个元素的数组的指针。该指针用 A 初始化——它指向的数组是 A 的第一行。

然后,v+1 是第一个元素之后的另一个指向包含 10 个元素的数组的指针。因此,它是 A 的第二行。

关于c - 关于C : pointer and Two-dimensional array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18054317/

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