| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 212 人关注过本帖
标题:sex为什么出不来???!!1
只看楼主 加入收藏
新手714
Rank: 1
等 级:新手上路
帖 子:48
专家分:3
注 册:2020-4-25
结帖率:88.89%
收藏
已结贴  问题点数:14 回复次数:5 
sex为什么出不来???!!1
#include<stdio.h>
#include<string.h>
int main()
{
    struct student
    {
        int num;
        char name[7];
        char sex;
        float score;
    }*p,stu;
    p = &stu;
    stu.num = 1;
    stu.sex = 'F';
    stu.score = 97;
    strcpy(stu.name, "Gongyoo");
    printf("No.%d\nSex:%c\nScore:%5.1f\nName:%s\n", stu.num, stu.sex, stu.score, stu.name);
    printf("\nNo.%d\nSex:%c\nScore:%5.1f\nName:%s", (*p).num, (*p).sex, (*p).score, (*p).name);
    return 0;
}
搜索更多相关主题的帖子: stu score name num char 
2020-05-22 18:20
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:361
帖 子:7289
专家分:42379
注 册:2011-1-18
收藏
得分:7 
strcpy(stu.name, "Gongyoo");
你将8个字符拷贝到name中,但name的容量是7,溢出了
2020-05-22 18:42
新手714
Rank: 1
等 级:新手上路
帖 子:48
专家分:3
注 册:2020-4-25
收藏
得分:0 
回复 2楼 rjsp
为什么sex输不出来?是被占用了?如果是占用了它是怎么找到sex的地址的???
2020-05-22 20:00
纯蓝之刃
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:22
帖 子:390
专家分:2378
注 册:2019-7-29
收藏
得分:7 
回复 3楼 新手714
赋给stu.name的值所占用的空间大于分配给stu.name的空间,在结构体里内存是连续的,stu.name后面的空间分配给了sex,所以如果你溢出一位,那么正好stu.name里的'\n'赋给了sex,sex的值是'\n'。sex的地址还是那个地址,只不过地址里的数据被替换了而已。你可以通过打印结构体里变量的起始内存地址查看计算地址是如何分配的。

道生一,一生二,二生三,三生万物。万物负阴而抱阳,冲气以为和。
2020-05-23 07:44
新手714
Rank: 1
等 级:新手上路
帖 子:48
专家分:3
注 册:2020-4-25
收藏
得分:0 
回复 4楼 纯蓝之刃
拜谢大佬!但是  打印结构体里变量的起始内存地址,咋整??
2020-05-23 15:04
新手714
Rank: 1
等 级:新手上路
帖 子:48
专家分:3
注 册:2020-4-25
收藏
得分:0 
回复 4楼 纯蓝之刃
为什么输出时Name和sex换个位置sex就可以输出了
2020-05-25 19:29
快速回复:sex为什么出不来???!!1
数据加载中...
 
   



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

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