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