弄清楚对应的类型先啦.
你要引用结构体的成员,那当然先得是这个结构体类型的了.
----------------解决方案--------------------------------------------------------
p=(struct stu*) student[0].name;这语句有问题
应该为p=&student[0];
----------------解决方案--------------------------------------------------------
你不看看你指针指向的是什么.
p=(struct stu*) student[0].name;//这句也错了,错的很严重
明显是错误的引用p->num
*p是struct stu 变量,那它就应该有这个成员呀,不是很明白
----------------解决方案--------------------------------------------------------
应该这样像12#写的样.你强制类型转换,但真正的指针类型是什么样子还是什么样子,你要移动就要看移动的长度.
----------------解决方案--------------------------------------------------------
struct stu{
int num;
char name[20];
}student[3]={{1,"yqiong"},{2,"song"},{3,"li"}},*p;
main()
{stu *p=&student[0];
p=p+1;
printf("\n%d\n",p->num); /*输出的是28531,这什么意思呀?*/
printf("%d\n",sizeof(*p));//貌似也有问题,不知道你要测试什么
}
----------------解决方案--------------------------------------------------------
printf("%d\n",sizeof(*p));//貌似也有问题,不知道你要测试什么
*p为struct stu类型,测的就是结构体的长度,就是各成员长度之各呀
----------------解决方案--------------------------------------------------------
*p是struct stu 变量,那它就应该有这个成员呀,不是很明白
你用了强制类型转换,虽然语法没什么错误,但逻辑上有错误,p此时的指针值是"yqiong"这个字符串的首地址,经过p=p+1后,p成为了一个野指针,指向了一个不确定的位置,最后p->num输出的也是不确定的值
[此贴子已经被作者于2007-11-5 13:47:58编辑过]
----------------解决方案--------------------------------------------------------
应该这样像12#写的样.你强制类型转换,但真正的指针类型是什么样子还是什么样子,你要移动就要看移动的长度
----------------解决方案--------------------------------------------------------
你用了强制类型转换,虽然语法没什么错误,但逻辑上有错误,p此时的指针值是"yqiong"这个字符串的首地址,经过p=p+1后,p成为了一个野指针指向了一个不确定的位置,最后p->num输出的也是不确定的值
当前p指向"yqiong"字符串首地址,p=p+1;此时p就指向"yqiong"字符串首地址后面的22个(结构体长度)字节地址.这样理解错误?这样算的话p有确定位置呀!但至于p->num输出确实不好说
----------------解决方案--------------------------------------------------------
你==,我写个东西给你看
,这里连个编译器都没有,汗啦.
----------------解决方案--------------------------------------------------------