C++ struct的几个问题
2.注:此处为之前的定义C++ struct的几个问题,c++,C++,2.注:此处为之前的定义 student s[0].name = "Jack"; ^ 三,。错误:应为“;”在申报结束时 struct student s[10]; ^ 字符名[10]: 10字符对于名称来说太短 char假定名称不在ASCII或UTF-8之外,并且看起来不像是在使用Unicode库 用于存储字符串的固定大小数组与惯用的C++无关。 解决方案:使用std::string或std::wstring——并使用Uni
student s[0].name = "Jack";
^
三,。错误:应为“;”在申报结束时
struct student s[10];
^
字符名[10]代码>:
10
字符对于名称来说太短
char
假定名称不在ASCII或UTF-8之外,并且看起来不像是在使用Unicode库
用于存储字符串的固定大小数组与惯用的C++无关。
解决方案:使用std::string
或std::wstring
——并使用Unicode库李>
struct student s[10]
这不是惯用的C++。struct
关键字是不必要的。只是学生s[10]代码>已足够
同样,避免使用固定大小的数组,除非您确定将使用10条记录。改用std::vector
不初始化数组,因此数据成员将包含未定义/未初始化的数据。使用={0}
清空内存和/或定义学生
构造函数
name=“Jack”代码>
这不会编译。我想你的意思是把s[0].name=“Jack”
未为字符串定义赋值运算符=
(默认情况下)。请注意,您的结构的成员类型是char
,而字符串文本是const char[N]
,因此实际上您是在为char
成员分配指针(由于数组衰减)。这是一个毫无意义的行动
main
没有返回值。使用返回退出\u成功代码>关于成功。这不是严格要求的,但我个人认为显式返回值是一种好的做法
什么错误?这有点重要。认真地说,使用
strcpy()
“出现了一些错误”是不够的。“嘿,我的车没有启动。我收到一条错误消息。你能修复它吗?”@SouravGhosh-Ya,回想起来很明显。到目前为止,我看到的问题中有一半提到了一个错误,但没有说明是什么错误。“我有点像是在自动驾驶。”卡奇金尼卡特·唐;不要误解我,你的评论是恰当的,OP应该发布错误,毫无疑问。:)谢谢,老兄。我刚开始学这些东西,所以我不能真正理解你的一些单词。我的英语也不太好。我会再试一次。再次感谢。关于你的第4点。C++标准实际上保证如果你在代码的结尾掉了(主的< /代码>)(不返回一个值),那么它返回0——这不是一个bug,而是一个明确定义的行为。@ JesperJuhl谢谢你指出,我已经更新了我的答案。“Dai,欢迎你。”顺便提一下要想真正学究化,就应该返回EXIT\u SUCCESS
。并不是所有的平台都使用0(零)来表示成功-一个例子是虚拟机。@JesperJuhl噢,哇-我从来都不知道这个!
struct student s[10];
^
student s[0].name = "Jack";
^
;