高手解释下~!

来源:百度知道 编辑:UC知道 时间:2024/06/26 01:33:24
有关结构体的问题
p=(struct student*)stu[0].name;
p中的值是stu[0]元素的name成员的起始地址.但为什么用
printf("%s",p);输出时 却是stu[0]元素的name成员的值?
printf("%s",p);中的p不是指针吗?

p是指针,但是
p=(struct student*)stu[0].name; 相当于把stu值直接赋给p,所以输出的时候是name的值,这里的p不是指针,如果p是指针的话应该输出的结果应该是p的内存地址,要输出p的内容应该写成这样:printf("%s",*p);

没错啊,你指定用%s输出,p指向的地址正好存放的是字符串stu[0].name,当然输出这个name了