結構體中的陣列成員的賦值問題
阿新 • • 發佈:2019-02-13
#include <iostream>
using namespace std;
struct student
{
char name[20];
int age;
};
int main( )
{
student s;
s.name="gyy"; //error
return 0;
}
道理和以下語句錯誤的原因一樣,陣列名錶示常量,不允許對常量賦值,所以常量不允許出現在“=”的左邊,當做左值出現。所以不能直接用字串賦值給陣列名。但請注意:可以在定義字元陣列的同時用字串給字元陣列賦初值。
char name[20]="gyy"; //ok
但先定義,再賦值的方式就是錯誤的。
char name[20];
name="gyy"; //error
對開始的程式修改方式(1)
#include <iostream>
using namespace std;
struct student
{
string name;
int age;
};
int main( )
{
student s;
s.name="gyy"; //ok
return 0;
}
對開始的程式修改方式(2)
#include <iostream>
using namespace std;
struct student
{
char name[20];
int age;
};
int main( )
{
student s;
strcpy(s.name,"gyy"); //ok
return 0;
}
轉自:http://blog.sina.com.cn/s/blog_53a8498d0100wpnj.html