c中结构体初始化问题
结构体是这样定义的:
struct student {
int num;
char name[5];
};
这样初始化没问题:
student p = {10,"shen"};
但是这样初始化:
p.num = 10;
p.name[5] = "shen";
报错,说这个有问题p.name[5] = "shen";
请高手帮忙
问题点数:20、回复次数:11Top
1 楼pcboyxhy(-273.15℃)回复于 2005-04-02 16:06:47 得分 10
p.name[5] //取一个元素
叔祖是不可以用=整体复制的
用strcpy(p.name, "shen");Top
2 楼ypengfei(Fuck Japan!!!!!!)回复于 2005-04-02 16:23:26 得分 5
p.name[5] = "shen";小标溢出,然后应该是一个值才对,就像楼上说的。
p.name[4] = 'a';就可以了Top
3 楼Flood1984(峰子)回复于 2005-04-02 17:05:00 得分 0
p.name[5] = "shen";
//
改成:
p.name = "shen";
Top
4 楼Flood1984(峰子)回复于 2005-04-02 17:05:56 得分 0
sorry,这不行,
可以用:
p.name[0] = 'shen';
Top
5 楼zwzzj(独学而无友,则孤陋而寡闻. )回复于 2005-04-02 17:10:38 得分 5
用这个吧
strncpy(p.name,'shen',4);Top
6 楼scriptren(路是慢慢走出来的......)回复于 2005-04-02 21:53:17 得分 0
p.name[5] 是不存在的 下标超出了 而且这个不存储一个字符串的Top
7 楼cwwwj(392-387-44-17-377)回复于 2005-04-02 21:55:58 得分 0
p.name[5] 越界了Top
8 楼dream2013(每个人都有魔鬼的一面( http://blog.sina.com.cn/u/1422260677 ))回复于 2005-04-02 23:07:39 得分 0
markTop
9 楼MagicCarmack(MagiC++)回复于 2005-04-02 23:52:24 得分 0
普通的数组是不可以整体赋值的!
再说你的p.name[5] 越界了
要想整体赋值可以用vectorTop
10 楼xjp6688(大平/要做必须最好)回复于 2005-04-03 00:36:19 得分 0
p.name[5] 是不存在的 越界了Top
11 楼horisly(SUN YAT-SEN UNIVERSITY (逸仙先生))回复于 2005-04-03 03:02:04 得分 0
任何数组都不可以先是声明了,然后再另外直接用等号(=)赋值的。
**
可以这样做:
struct student {
int num;
char name[5];
};
==》》
student p[3]={student(1,"Zhang"),student(2,"Li"),student(3,"Liu")};
Top




