结构体中字符数组初始化的问题?

zjuylok 2008-01-17 02:30:44
struct stype {
char c1[16]
};

struct stype s1;
s1.c1 = "Hello"; //错误

strcpy(s1.c1, "Hello"); //正确

但是, 如果直接在定义的时候, 赋值可以呢?
char c2[16] = "Hello";
...全文
678 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
noparks 2010-09-23
  • 打赏
  • 举报
回复
為何看不到2樓的回覆
yijianxiangde100 2009-05-07
  • 打赏
  • 举报
回复
学习了。
VTQQTV 2008-01-17
  • 打赏
  • 举报
回复
观点如同2楼
DHD 2008-01-17
  • 打赏
  • 举报
回复
路过
Yaser-Z 2008-01-17
  • 打赏
  • 举报
回复
关注中....
Treazy 2008-01-17
  • 打赏
  • 举报
回复
这个不是在哪里不行的问题

这个是一个概念错误的表现

要明白
char c2[10];//声明一个10元素的数组c2,此时c2的空间已经被分配,c2是这个数组的地址,是一个常量
如果再进行
c2 = "hello";//这样其实就试图改变c2,这是错误的

无论在结构体或者非结体中,这样做都是错误的(不考虑C++的一些特性)

而在结构体或者数组定义的时候,是可以直接对数组或者结构体初始化的,此时声明和定义在一起了(注:声明和定义是不同的!)
如上面的
struct stype {
char c1[16]
}s1 = {"hello"}; //这里不仅给s1分配了空间,还给s1的成员定了初始值

如果还有不清楚,可以查看c99标准!
oo 2008-01-17
  • 打赏
  • 举报
回复
在结构体里不行

65,208

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧