C++ struct的几个问题

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

2.注:此处为之前的定义

    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}
    清空内存和/或定义
    学生
    构造函数
  • 学生s[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";
                    ^
                    ;