这道C语言输出结果题怎么写呀?

如图,不要直接给结果,我想知道过程,和为什么会这样子。... 如图,不要直接给结果,我想知道过程,和为什么会这样子。 展开
 我来答
My_Persistence
2020-06-24 · TA获得超过3465个赞
知道大有可为答主
回答量:1201
采纳率:81%
帮助的人:414万
展开全部
详细分析如下:
#include <stdio.h>

int main()
{
int a[5][2] = {0,1,2,3,4,5,6,7,8,9};
int *p = a[0];
int (*p2)[2] = &a[1];
int *p1[5] = {a[0],a[1],a[2],a[3],a[4]};
int **t = p1;
++p;
++p2;
printf("a = %p\n", a);
printf("a[0] = %p\n", a[0]);
printf("&a[0] = %p\n\n", &a[0]);

printf("*p = %d\n", *p);
printf("**p2 = %d\n", **p2);
printf("p2[1][2] = %d\n", p2[1][2]);
printf("*p1[3] = %d\n", *p1[3]);
printf("t[2][1] = %d\n", t[2][1]);

return 0;
}

/**
**运行结果:
a = 000000000061FDE0
a[0] = 000000000061FDE0
&a[0] = 000000000061FDE0

*p = 1
**p2 = 4
p2[1][2] = 8
*p1[3] = 6
t[2][1] = 5

**分析如下:
int a[5][2] = {0,1,2,3,4,5,6,7,8,9};
<==>
int a[5][2] = {
{0,1},
{2,3},
{4,5},
{6,7},
{8,9}
};
a是一个二维数组,a[0]...a[4]则是一维数组,a[0]是一维数组名。数组名的值代表的是数组首元素的地址。
int *p = a[0] 表示指针p指向一维数组a[0],而一维数组a[0]的值就是首元素a[0][0]的地址,即&a[0][0],所以int *p = a[0] <==> int *p=&a[0][0];
++p 则p指向a[0]数组的下一个元素,即a[0][1], 所以 *p = 1

指针p2 是一个指向 int[2]数组类型的指针变量,它的指针类型是int(*)[2]。
int (*p2)[2] = &a[1]; 表示指针p2指向了一维数组a[1], 可以把p2看做是二维数组的行指针,初始指向二维数组a的第二行。
++p2 则p2指针指向二维数组a的下一行,即指向了一维数组a[3],即 p2 = &a[2], 所以**p2 就是a[2][0]的值=4,故**p2 = 4

p2[1][2] 此时p2是指向一维数组a[2]的,p2[1] <==> *(p2+1)的,那么(p2+1)指向的是一维数组a[3]了,*(p2+1)就是&a[3][0]
p2[1][2] <==> *(*(p2+1)+2),即 *(&a[3][0]+2) 实际上就是取a[4][0]的值了,所以 p2[1][2] = 8。
记住p2是行指针,(p2+1)就指向二维数组的下一行了。

p1 它是一个指针数组,它的元素值是一级指针a[0]...a[4]
p1[3]的值是a[3],*p1[3]就是取一维数组a[3]的首元素的值,即a[3][0]=6,所以*p1[3]=6

t 是一个二级指针,所谓二级指针就是指向指针的指针,即它存放的是指针变量所占内存单元的地址,因为指针变量本身也是要占用内存空间的。
t初始指向一级指针p1[0]的,即a[0]。t[2] = *(t+2),即指针数组p1[2]的值=a[2]。
t[2][1] <==>*(t[2]+1) <==> *(a[2]+1),即a[2][1]的值=5,所以 t[2][1]=5
*/
七擒关羽
2020-06-23 · TA获得超过114个赞
知道小有建树答主
回答量:491
采纳率:70%
帮助的人:64.6万
展开全部
这个是简单的数组与指针的关系运算。

a为2维数组,p为int类型指针指向a的第一行数组,p2是数组指针指向的a的第二行数组,
p1是指针数组指针初始化的数值,t是指向指针的指针指向p1.
追问
听得不怎么明白。能说得更详细吗?例如把每一步的变化说出来。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式