当前位置: 代码迷 >> C语言 >> 指向结构体的指针(已解决)
  详细解决方案

指向结构体的指针(已解决)

热度:101   发布时间:2007-11-05 12:24:16.0
指向结构体的指针(已解决)

指向结构体的指针
struct stu{
int num;
char name[20];
}student[3]={{1,"yqiong"},{2,"song"},{3,"li"}},*p;
main()
{p=(struct stu*) student[0].name;
p=p+1; /*执行p+1时,p的值增加了结构体的长度,这是书上的一句原话,
这句话什么意思呀?看不懂*/
printf("%s\n",p);
printf("%d",sizeof(struct stu)); /*输出为22*/
printf("%d",sizeof(*p)); /*这行也输出为22呀!*/
}

[此贴子已经被作者于2007-11-6 12:08:12编辑过]

搜索更多相关的解决方案: 结构体  指针  

----------------解决方案--------------------------------------------------------

p=p+n使指针的值相对于当前的位置增加了n*L,L代表p指向的类型的长度


----------------解决方案--------------------------------------------------------
以下是引用静思在2007-11-5 12:27:30的发言:

p=p+n使指针的值相对于当前的位置增加了n*L,L代表p指向的类型的长度

这只说明了p指针指向发生了变化,而不表明结构体长度增加了呀


----------------解决方案--------------------------------------------------------
“p的值增加了结构体的长度”这句话的意思
是经过p=p+1这个赋值后,指针变量的增量大小是结构体的长度,而不是由于p值改变而增加了结构体的长度

[此贴子已经被作者于2007-11-5 12:37:49编辑过]


----------------解决方案--------------------------------------------------------
谢谢受益匪浅
----------------解决方案--------------------------------------------------------
指针的移动是按照它指向的数据类型来算的.
----------------解决方案--------------------------------------------------------
struct stu{
int num;
char name[20];
}student[3]={{1,"yqiong"},{2,"song"},{3,"li"}},*p;
p=(struct stu*) student[0].name;
执行了这个语句后,结构体中的成员有哪些呀?
----------------解决方案--------------------------------------------------------
结构体的初始化就是对应的给它的成员初始化.
一个对一个,没有的以空对齐.
----------------解决方案--------------------------------------------------------
struct stu{
int num;
char name[20];
}student[3]={{1,"yqiong"},{2,"song"},{3,"li"}},*p;
main()
{p=(struct stu*) student[0].name;
p=p+1;
printf("\n%d\n",p->num); /*输出的是28531,这什么意思呀?*/
printf("%d\n",sizeof(*p));
}

----------------解决方案--------------------------------------------------------
你不看看你指针指向的是什么.
p=(struct stu*) student[0].name;//这句也错了,错的很严重
明显是错误的引用p->num
----------------解决方案--------------------------------------------------------
  相关解决方案