构造数组
结构数组
我编了个程序,里面定义了结构
struct plane {
int seat;
int flag;
char fname[11];
char lname[11];
};
然后我想初始化一个结构数组时
for (i = 0; i < 12; i++)
{
planes[i].seat = i;
planes[i].flag = 0;
planes[i].fname[11] = ""; //即初始化一个空名字符数组
planes[i].lname[11] = "";
}
最后两个等号“=”下面出现了波浪线,一看,发现是
Error:不能将“const char *” 类型的值分配到"char"类型的实体
请问怎么回事?怎么办?
------解决方案--------------------
我编了个程序,里面定义了结构
struct plane {
int seat;
int flag;
char fname[11];
char lname[11];
};
然后我想初始化一个结构数组时
for (i = 0; i < 12; i++)
{
planes[i].seat = i;
planes[i].flag = 0;
planes[i].fname[11] = ""; //即初始化一个空名字符数组
planes[i].lname[11] = "";
}
最后两个等号“=”下面出现了波浪线,一看,发现是
Error:不能将“const char *” 类型的值分配到"char"类型的实体
请问怎么回事?怎么办?
------解决方案--------------------
- C/C++ code
planes[i].fname[11] = ""; //即初始化一个空名字符数组 planes[i].lname[11] = "";
------解决方案--------------------
首先,你初始化的下标越界了。
------解决方案--------------------
""是字符串,怎么可以赋给char
即使不是字符串,planes[i].fname[11]也越界了 11
------解决方案--------------------
字符串返回的是字符串的地址 (const char *)
------解决方案--------------------
可以这样。
- C/C++ code
#include<iostream> using namespace std; struct plane { int seat; int flag; char fname[11]; char lname[11]; }; int main() { plane planes[12]; for (int i = 0; i < 12; i++) { planes[i].seat = i; planes[i].flag = 0; strcpy(planes[i].fname, ""); strcpy(planes[i].lname, ""); } return 0; }