中易网

两道c程结构题 求方法

答案:2  悬赏:60  
解决时间 2021-01-12 10:37
  • 提问者网友:焚苦与心
  • 2021-01-11 16:27
两道c程结构题 求方法
最佳答案
  • 二级知识专家网友:独行浪子会拥风
  • 2021-01-11 16:39
2、1
2、3追问能问问怎么做的吗...?追答这两道都涉及结构体指针,tt{}这部分是结构体声明,包含了结构体内部变量的声明,s[3]={1,0,2,0,3,0}这部分是tt结构体的实例对象,也就是结构体变量的实例。struct tt *p=s+1,意思是声明一个tt类型的结构体指针并把s+1的地址(也就是s[1]的地址)给它,s[3]是一个数组,s就是数组的首地址,首地址可以进行运算取前后值。
struct tt{ int x;struct tt *y;} s[3]={1,0,2,0,3,0};//声明了一个结构体数组并给内部变量初始化
//分开就是s[0]={1,0},也就是s[0].x=1,s[0].y=0,以此类推
int main(){
struct tt *p=s+1;//s为数组首地址,s代表s[0]的地址,s+1代表s[1]的地址,s+2代表s[2]的地址
p->y=s;//p内部的 y指针被赋值s[0]
ptintf("%d",p->x);//输出p的x
p=p->y;//把p内部的y赋给p,这时p->x变成p->y->x,p->y变成p->y->y
ptintf("%d",p->x);
}
第二题与第一题类似,printf("%d",++(p->x));可以拆分成p->x+=1;printf("%d",p->x);追问谢谢 讲的很棒!!
全部回答
  • 1楼网友:迷人又混蛋
  • 2021-01-11 17:23

第一题B,第二题C
解答:
第一题:
struct tt *p=s+1<----------p指向s[1]
p->y=s<--------------------p->y指向s[0]
那么,第一个输出就是输出s[1]的x,就是2
第二个输出就是s[0]的x,就是1
补充:指针加1代表指针存储的地址加指针指向的数据类型的大小。比如说,p是int类型的指针,p指向a,现在有个b变量,它和a同类型而且在内存中存储的位置和a相邻,那么p=p+1后,p指向b。


第二题:
struct ord *p=dt<-----------p指向dt[0],那么p->x=1,p->y=2
第一个输出是2,第二个是3
补充:++x和x++的区别,一个是在++x所在语句完成前执行自增操作,另一个是在x++所在语句完成后执行自增操作。追问能问问怎么做的吗...?追答第一题:
struct tt *p=s+1<----------p指向s[1]
p->y=s<--------------------p->y指向s[0]
那么,第一个输出就是输出s[1]的x,就是2
第二个输出就是s[0]的x,就是1
补充:指针加1代表指针存储的地址加指针指向的数据类型的大小。比如说,p是int类型的指针,p指向a,现在有个b变量,它和a同类型而且在内存中存储的位置和a相邻,那么p=p+1后,p指向b。
第二题:
struct ord *p=dt<-----------p指向dt[0],那么p->x=1,p->y=2
第一个输出是2,第二个是3
补充:++x和x++的区别,一个是在++x所在语句完成前执行自增操作,另一个是在x++所在语句完成后执行自增操作。追问谢谢 讲的很棒!!认真看了!很清晰!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息