c++的结构体

来源:百度知道 编辑:UC知道 时间:2024/07/08 16:23:50
#include <iostream.h>
struct student
{
char name[10];
char sex[5];

}stu[50];
void main()
{
stu[5].name="asa";
cout<<(*(stu+5)).name;

}
请问为什么一定要strcpy(stu[5].name,"asa");

你应该是赋值和初始化搞混了。初始化是在定义的时候给值,如“ int a=5;”否则就是赋值了,如 “int a;a=5;”
一个字符串数组str[10],如果你对他初始化“char str[10]="asa";” 那么编译器会自动在数组后面(即str[3])加'\0',并且str[3]-str[9]都为'\0'。如果不进行初始化的话,就要给每个数组元素赋值,即 “for(i=0;i<10;i++) cin>>ch;”
我给你改了下,仅供参考:
#include <iostream.h>
struct student
{
char name[10];
char sex[5];

}stu={"asa","m"};
void main()
{
cout<<stu.name;

}

void main()
{
stu[5].name="asa";//不能这样 要strcpy(stu[5].name,"asa");
cout<<(*(stu+5)).name;

}

因为,数组名不是一个变量,可以理解成一个常量指针,所以不能直接赋值。

C++也没有提供相应的重载的赋值运算符,所以只能用strcpy。

也可以这样;;;;#include <iostream.h>
struct student
{
char name[10];
char sex[5];

}stu[50];
void main()
{
stu[5].name="asa";
cout<<stu[5].name<<endl;

stu[5].name是地址,"asa"是字符串,你说能