1. 程式人生 > >結構體中的陣列成員的賦值問題

結構體中的陣列成員的賦值問題

#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