C++中能否对结构体类型中某个成员赋初值?

来源:百度知道 编辑:UC知道 时间:2024/05/09 11:27:23
比如:
#include<iostream.h>
struct a
{
int s;
char c='i';
};
main()
{
a a1;
cin>>a1.s>>a1.c;
cout<<a1.s<<a2.c;
}
这样为何不行?程序第五行应该怎么改?

不准许在结构内赋初值,因为它本身是一个结构,而不是一个数据,如果被赋初值表示它是一个数值
所以要是想赋值需要在结构外赋值

因为申请内存空间的时候它不具备初始化的能力,只是将某部分的内存交给一个地址,所以不可以在结构内赋初值

结构怎么可以这样赋初值的呢

#include<iostream.h>
struct a
{
int s;
char c;
};
main()
{
a a1;
a1.c='i';
cin>>a1.s>>a1.c;
cout<<a1.s<<a2.c;
}

那就用类吧,结构也一样可以定义构造函数,在构造函数中赋值也可以
struct a
{
int s;
char c;

a()
{
c = 'i';
}
};

貌似定义的时候只能赋零啊,就这个程序而言第五行直接写char c;就对了

结构体内成员不能直接赋值,必须先定义a1
struct a
{
int s;
char c;
};

a a1;
a1.c='i';