有以下定义的链表struct st{int n,struct st *next;}a[3]={5,&a[1],7,&a[2],9,NULL}, *p=&a;值为7的表达
Ap->nB(p->n)++C(++p)->nDp->next->n教科书答案是D解释以下谢谢注意*p=&a这样哪有答案啊让我头疼啊不是应该*p=&a[0]才是D嘛...
A p->n B(p->n)++ C (++p)->n D p->next->n
教科书答案是D解释以下谢谢
注意*p=&a 这样哪有答案啊让我头疼啊不是应该*p=&a[0]才是D嘛 展开
教科书答案是D解释以下谢谢
注意*p=&a 这样哪有答案啊让我头疼啊不是应该*p=&a[0]才是D嘛 展开
3个回答
展开全部
typedef struct _st{
int n;
struct st *next;
}st;
st a[3]={5,&a[1],7,&a[2],9,NULL};//初始化a[3]这个结构体数组, a[0] 的值为 a[0].n=5;a[0].next=&a[1];(也就是说a[0]后一个元素为a[1]),同理,a[1]的n为7,指向a[2];a[2]的n为9,后一个元素为空;
st *p=&a;
现在p的值为结构体数组首地址,也就是说是 p = &a[0]; p->next->n也就是a[1].n,为7。
int n;
struct st *next;
}st;
st a[3]={5,&a[1],7,&a[2],9,NULL};//初始化a[3]这个结构体数组, a[0] 的值为 a[0].n=5;a[0].next=&a[1];(也就是说a[0]后一个元素为a[1]),同理,a[1]的n为7,指向a[2];a[2]的n为9,后一个元素为空;
st *p=&a;
现在p的值为结构体数组首地址,也就是说是 p = &a[0]; p->next->n也就是a[1].n,为7。
更多追问追答
追问
按你的说法就是说*p=&a等价于p=&a[0]
我不能接受
a=&a[0],a是a[0]的地址啊,再用取地址符号&来&a,就是地址的地址了
追答
char *p = a;
等价于
char *p = &a[0];
char *p = &a;
不知道你能不能理解。不过你倒是可以自己写一下试试。
char b[100][100];
printf("b:%p sizeof(b):%d &b:%p sizeof(&b):%d\n",sizeof(b),sizeof(&b));
输出结果:
b:0x7fff88e60930 sizeof(b):10000 &b:0x7fff88e60930 sizeof(&b):8
地址是一样的,只不过b的类型是int[][],而&b仅仅是一个指向int[][]的指针。
typedef struct _st{
int n;
struct st *next;
}st;
st a[3]={5,&a[1],7,&a[2],9,NULL};
st *x = &a;
我都给你改对了,百分百可以运行,竟然采纳错误答案
“
另外a本身就是st*,则&a就是st**,p却是st*,所以不能赋给p
”
我表示很无奈??
你完全可以自己写两句来试试
来自:求助得到的回答
展开全部
是题目错了,你的代码我根本不能编译
首先
int n,struct st *next;
这里中间应该是分号而不是逗号
另外a本身就是st*,则&a就是st**,p却是st*,所以不能赋给p
应该改成*p=a
首先
int n,struct st *next;
这里中间应该是分号而不是逗号
另外a本身就是st*,则&a就是st**,p却是st*,所以不能赋给p
应该改成*p=a
追问
好吧我比较同意你的说法但楼下有个跟你不同的我还是不知道怎么办教科书会有错题吗
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询