|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 结构体的初始化
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
1994
人关注过本帖
标题:
结构体的初始化
只看楼主
加入收藏
faminxmu
来 自:厦门
等 级:
论坛游侠
帖 子:191
专家分:106
注 册:2008-4-23
结帖率:
70%
楼主
收藏
问题点数:0 回复次数:17
结构体的初始化
在定义的一个结构体中
struct student
{
char name[10];
float score;
char sex;
};
struct student a={"famin",100,'M'};可以这样初始化,但假如我要一个一个的初始化改怎么样呢?为什么对name的初始化a.name={"famin"};不对呢?
搜索更多相关主题的帖子:
结构体
name
student
char
famin
2008-05-08 23:18
举报帖子
使用道具
赠送鲜花
moonwalker
等 级:
新手上路
威 望:
1
帖 子:909
专家分:2
注 册:2007-3-2
第
2
楼
收藏
得分:0
用strcpy
/bbs/down.asp?html=482910" target="_blank">“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2008-05-08 23:19
举报帖子
使用道具
赠送鲜花
faminxmu
来 自:厦门
等 级:
论坛游侠
帖 子:191
专家分:106
注 册:2008-4-23
第
3
楼
收藏
得分:0
回复楼上的
书上就是用strcpy的,但我想知道a.name={"famin"};为什么不行,你告诉我用strcpy好象答非艘问吧?我要的是原因
在虚拟的世界中寻找目标。
2008-05-08 23:22
举报帖子
使用道具
赠送鲜花
moonwalker
等 级:
新手上路
威 望:
1
帖 子:909
专家分:2
注 册:2007-3-2
第
4
楼
收藏
得分:0
因为你在声明的时候可以指向一个常量空间,
但是赋值的时候就不行
你又不愿意声明时候赋值,就只能用字符串拷贝,或者给数组逐个赋值
回答完毕
/bbs/down.asp?html=482910" target="_blank">“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2008-05-08 23:24
举报帖子
使用道具
赠送鲜花
sunkaidong
来 自:南京师范大学
等 级:
贵宾
威 望:
12
帖 子:4496
专家分:141
注 册:2006-12-28
第
5
楼
收藏
得分:0
回楼主是不可以的..在你声明变量的s的时候name就定了..
当你定义为struct student a的时候,
里面的数组是被初始化为空的,由于数组的名字是常量后面的赋值是不合法的;
撇开结构体:
1.char c[100]={"famin"};ok
2.char c[100];
c={"famin"}; wrong
而struct student a={"famin",100,'M'};
可以看成初始化char c[100]={"famin"};
[[it] 本帖最后由 sunkaidong 于 2008-5-8 23:37 编辑 [/it]]
学习需要安静。。海盗要重新来过。。
2008-05-08 23:25
举报帖子
使用道具
赠送鲜花
faminxmu
来 自:厦门
等 级:
论坛游侠
帖 子:191
专家分:106
注 册:2008-4-23
第
6
楼
收藏
得分:0
感谢moonwalker
moonwalker 说对了,因为在定义的时候name[10]表示一个数组而在引用的时候name[10]则表示数组name[10]的第10个元素
在虚拟的世界中寻找目标。
2008-05-08 23:29
举报帖子
使用道具
赠送鲜花
moonwalker
等 级:
新手上路
威 望:
1
帖 子:909
专家分:2
注 册:2007-3-2
第
7
楼
收藏
得分:0
我感觉你理解的还是不对。。。
/bbs/down.asp?html=482910" target="_blank">“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2008-05-08 23:31
举报帖子
使用道具
赠送鲜花
moonwalker
等 级:
新手上路
威 望:
1
帖 子:909
专家分:2
注 册:2007-3-2
第
8
楼
收藏
得分:0
"famin"这个东西是const char*
a.name是char *
可以把const char 或char型数据的地址赋给const char *
但是不能把const char型数据的地址赋给char *
还真是绕口
/bbs/down.asp?html=482910" target="_blank">“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2008-05-08 23:43
举报帖子
使用道具
赠送鲜花
StarWing83
来 自:仙女座大星云
等 级:
贵宾
威 望:
19
帖 子:3951
专家分:748
注 册:2007-11-16
第
9
楼
收藏
得分:0
其实很简单。
{"fname"}这样的东西,有个专门的名字,LZ你记住,叫做“初始化参数表”。你看一对大括号围着的,像不像一个表格呢?这样的表格是C语言的福利。可以让你[bo]在定义时[/bo]向结构体啊,数组啊里面复制东西。注意,是复制东西,换句话说这其实就是strcpy,只不过是系统帮你完成了,不需要你显式调用而已。
而既然叫做“初始化”参数表。自然只能够在初始化的时候使用。一旦初始化结束,就再没有“后悔药”吃了。所以写a.name="fname";不对,这个时候,你已经初始化结束了。当然你可以使用strcpy,这和使用初始化参数表的效果是一样的~~~~
专心编程………
飞燕算法初级群:3996098
我的Blog
2008-05-09 03:16
举报帖子
使用道具
赠送鲜花
StarWing83
来 自:仙女座大星云
等 级:
贵宾
威 望:
19
帖 子:3951
专家分:748
注 册:2007-11-16
第
10
楼
收藏
得分:0
回复 8# 的帖子
你确定??
a的类型是char[10],绝对不是char*。在数组传参的时候,a会自动退化为const char*,然后再[bo]传值[/bo]给char*。所以看起来好像传给函数的时候,和char*是一样的。但是char[10]和char*有着本质的不同!
顺便说一下因为C只有传值这一种传参方式,所以const和non-const的区别不明显。你可以试试看,将char[10]传给void func(char* &str),看看是什么结果。
GCC显示“无法将临时char*变量赋给非常量引用”,这印证了我关于数组退化为指针的观点。VC显示“无法将char[10]转换为char *&,这印证了我关于数组是一种独立类型的观点。
专心编程………
飞燕算法初级群:3996098
我的Blog
2008-05-09 03:23
举报帖子
使用道具
赠送鲜花
18
1/2页
1
2
快速回复:
结构体的初始化
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.018340 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved