C++ 无法从';初始值设定项列表';至';Char'; #包括 使用名称空间std; 无效测试(); 结构studentType { 字符名[26]; 双gpa; int-sID; 煤焦品位; }; int main() { 学生型学生; studentType*studentPtr; studentPtr=&student; 学生平均成绩=3.9; studentPtr->gpa=3.9;//或(*studentPtr).gpa=3.9; //--->错误studentPtr->name[26]={'M','a','r','k'}; 返回0; }

C++ 无法从';初始值设定项列表';至';Char'; #包括 使用名称空间std; 无效测试(); 结构studentType { 字符名[26]; 双gpa; int-sID; 煤焦品位; }; int main() { 学生型学生; studentType*studentPtr; studentPtr=&student; 学生平均成绩=3.9; studentPtr->gpa=3.9;//或(*studentPtr).gpa=3.9; //--->错误studentPtr->name[26]={'M','a','r','k'}; 返回0; },c++,c++17,C++,C++17,您好,我不太确定哪里出了问题。我修复错误的一种方法是将其转换为strcpy,然后打印例如:strcpy(studentPtr->name,“Mark”),但我想知道是否有更好或更有效/自然的方法来修复此问题。\35; include #include <iostream> using namespace std; void nullTest(); struct studentType { char name[26]; double gpa; int sI

您好,我不太确定哪里出了问题。我修复错误的一种方法是将其转换为strcpy,然后打印例如:strcpy(studentPtr->name,“Mark”),但我想知道是否有更好或更有效/自然的方法来修复此问题。

\35; include
#include <iostream>

using namespace std;

void nullTest();

struct studentType
{
    char name[26];
    double gpa;
    int sID;
    char grade;
};

int main()
{
    studentType student;
    studentType* studentPtr;

    studentPtr = &student;


    student.gpa = 3.9;
    studentPtr->gpa = 3.9; // or (*studentPtr).gpa = 3.9;

//---> the error    studentPtr->name[26] = { 'M','a','r','k'};

return 0;
}
使用名称空间std; 无效测试(); 结构studentType { 字符名[26]; 双gpa; int-sID; 煤焦品位; }; int main() { 学生型学生; studentType*studentPtr; studentPtr=&student; 学生平均成绩=3.9; studentPtr->gpa=3.9;//或(*studentPtr).gpa=3.9; /*-->更改*/strcpy_s(studentPtr->name,“Mark”);
cout在声明中:
studentPtr->name[26]={M'、'a'、'r'、'k'};
,您正在访问数组中的第27个
字符(这超出了范围!),并试图将
分配给单个
字符,但即使您要删除
[26]
从分配中删除,以便分配给数组本身,这仍然不起作用,因为您无法将任何内容分配给固定数组。但是,您可以将数据复制到一个数组中,例如:

#包括
#包括
使用名称空间std;
结构studentType
{
字符名[26];
双gpa;
int-sID;
煤焦品位;
};
int main()
{
学生型学生;
studentType*studentPtr;
studentPtr=&student;
学生平均成绩=3.9;
学生PTR->gpa=3.9;
strncpy(studentPtr->name,“Mark”,26);
返回0;
}

否则,请使用
std::array
而不是
char[26]
,因为
std::array
支持赋值:

#包括
#包括

但实际上,您应该使用
std::string
,例如:

#包括
#包括
使用名称空间std;
结构studentType
{
字符串名;
双gpa;
int-sID;
煤焦品位;
};
int main()
{
学生型学生;
studentType*studentPtr;
studentPtr=&student;
学生平均成绩=3.9;
学生PTR->gpa=3.9;
studentPtr->name=“Mark”;
返回0;
}

无法分配给数组,只能初始化数组(定义时)或复制数组(如
strcpy(studentPtr->name,“Mark”)
。使用
strcpy
也将正确地以null终止字符串。将
name
声明为
std::string
,这将使您的生活更轻松。好的,非常感谢!
studentPtr->name[26]={M',a',r',k};
您的代码正在尝试用多个字符初始化名称数组末尾的单个字符。谢谢您的额外努力!
#include <iostream>

using namespace std;

void nullTest();

struct studentType
{
    char name[26];
    double gpa;
    int sID;
    char grade;
};

int main()
{
    studentType student;
    studentType* studentPtr;

    studentPtr = &student;


    student.gpa = 3.9;
    studentPtr->gpa = 3.9; // or (*studentPtr).gpa = 3.9;

    /*--> the change*/ strcpy_s(studentPtr->name, "Mark");

    cout << studentPtr << endl;
    cout << student.gpa << endl;
    cout << &student.gpa << endl;


    //nullTest();

    return 0;
}