| 查看: 275 | 回复: 2 | |||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | |||
刘源416木虫 (正式写手)
至尊
|
[求助]
一道不懂得C语言题目 已有1人参与
|
||
|
#include <stdio.h> #include <stdlib.h> #include <string.h> struct stu { char *name, gender; int score; }; main() { struct stu a={NULL, 'm', 290}, b; a.name=(char *)malloc(10); strcpy(a.name, "Zhao" ;b = a; b.gender = 'f'; b.score = 350; strcpy(b.name, "Qian" ;printf( "%s,%c,%d,", a.name, a.gender, a.score ); printf( "%s,%c,%d\n", b.name, b.gender, b.score ); } 为什么a.name会被修改为Qian? |
» 猜你喜欢
多组分精馏求助
已经有5人回复
交叉科学部支持青年基金,对三无青椒是个机会吗?
已经有7人回复
青椒八年已不青,大家都被折磨成啥样了?
已经有15人回复
免疫学博士有名额,速联系
已经有4人回复
国家基金申请书模板内插入图片不可调整大小?
已经有6人回复
国家级人才课题组招收2026年入学博士
已经有5人回复
Fe3O4@SiO2合成
已经有6人回复
青年基金C终止
已经有4人回复
26申博求博导推荐-遥感图像处理方向
已经有4人回复

baghnac
金虫 (小有名气)
- 应助: 14 (小学生)
- 金币: 1706.4
- 红花: 6
- 帖子: 177
- 在线: 44小时
- 虫号: 1365578
- 注册: 2011-08-11
- 性别: GG
- 专业: 宇宙学
【答案】应助回帖
★ ★
刘源416: 金币+2, ★有帮助 2015-08-03 07:09:54
刘源416: 金币+2, ★有帮助 2015-08-03 07:09:54
|
struct stu { char *name, gender; int score; }; 这个问题出现name是一个指针,用指针本身语言上没限制,但是如果要将这个结构体传输,比如从一个exe传到另一个exe,那就会出现严重问题,因为name的内存与stu的内存完全独立,不连续,导致传输后的数据不可用! 重新定义结构如下,即可解决 struct stu { char name[10]; char gender; int score; }; 话说,就10个字节,还malloc 楼主是因为太关注内存浪费问题,还是??? |

3楼2015-08-02 10:12:42
baghnac
金虫 (小有名气)
- 应助: 14 (小学生)
- 金币: 1706.4
- 红花: 6
- 帖子: 177
- 在线: 44小时
- 虫号: 1365578
- 注册: 2011-08-11
- 性别: GG
- 专业: 宇宙学
【答案】应助回帖
★ ★ ★
感谢参与,应助指数 +1
刘源416: 金币+3, ★有帮助 2015-08-03 07:08:50
感谢参与,应助指数 +1
刘源416: 金币+3, ★有帮助 2015-08-03 07:08:50
|
b = a; 这句不是很标准的C语言 有点像是C++的潜拷贝 效果为 b.name = a.name; b.gender = a.gender; b.score = a.score; 由于a.name 是一个指向malloc得到的地址,而b.name=a.name 这意味着b.name也指向同一地址 当你用strcpy(b.name, "Qian")修改b.name时,就会修改b.name指向的地址,由于a.name同时也指向同一地址,所以最后a.name也是"Qian" |

2楼2015-08-02 10:08:47













;
回复此楼