| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1182 人关注过本帖
标题:指向结构体的指针(已解决)
只看楼主 加入收藏
yqiong
Rank: 1
等 级:新手上路
帖 子:315
专家分:0
注 册:2007-7-4
结帖率:83.33%
收藏
 问题点数:0 回复次数:23 
指向结构体的指针(已解决)

指向结构体的指针
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编辑过]

搜索更多相关主题的帖子: 结构体 指针 
2007-11-05 12:24
静思
Rank: 3Rank: 3
来 自:沈阳
等 级:新手上路
威 望:8
帖 子:630
专家分:0
注 册:2006-2-28
收藏
得分:0 

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


英者自知,雄者自胜
2007-11-05 12:27
yqiong
Rank: 1
等 级:新手上路
帖 子:315
专家分:0
注 册:2007-7-4
收藏
得分:0 
以下是引用静思在2007-11-5 12:27:30的发言:

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

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

2007-11-05 12:32
静思
Rank: 3Rank: 3
来 自:沈阳
等 级:新手上路
威 望:8
帖 子:630
专家分:0
注 册:2006-2-28
收藏
得分:0 
“p的值增加了结构体的长度”这句话的意思
是经过p=p+1这个赋值后,指针变量的增量大小是结构体的长度,而不是由于p值改变而增加了结构体的长度

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


英者自知,雄者自胜
2007-11-05 12:37
chengyukyo1
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2007-10-18
收藏
得分:0 
谢谢受益匪浅
2007-11-05 12:47
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
指针的移动是按照它指向的数据类型来算的.

倚天照海花无数,流水高山心自知。
2007-11-05 12:49
yqiong
Rank: 1
等 级:新手上路
帖 子:315
专家分:0
注 册:2007-7-4
收藏
得分:0 
struct stu{
int num;
char name[20];
}student[3]={{1,"yqiong"},{2,"song"},{3,"li"}},*p;
p=(struct stu*) student[0].name;
执行了这个语句后,结构体中的成员有哪些呀?
2007-11-05 12:49
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
结构体的初始化就是对应的给它的成员初始化.
一个对一个,没有的以空对齐.

倚天照海花无数,流水高山心自知。
2007-11-05 12:50
yqiong
Rank: 1
等 级:新手上路
帖 子:315
专家分:0
注 册:2007-7-4
收藏
得分: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;
printf("\n%d\n",p->num); /*输出的是28531,这什么意思呀?*/
printf("%d\n",sizeof(*p));
}
2007-11-05 13:24
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
你不看看你指针指向的是什么.
p=(struct stu*) student[0].name;//这句也错了,错的很严重
明显是错误的引用p->num

倚天照海花无数,流水高山心自知。
2007-11-05 13:27
快速回复:指向结构体的指针(已解决)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016923 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved