1.struct
1.1 struct的基本结构
struct Mystruct
{
int num;
doble db=10.8;
};
Mystruct mystruct1,*mystuct;
匿名结构体:(没有结构体标志符)
struct
{
int num;
doble db
}sx,sy;//匿名结构体不允许初始化
1.2 struct 内存
一片连续的内存空间,结构体成员内存相互独立。
1.3 嵌套
一个结构体内部不能包含自己
1.4访问结构体成员
使用“.”操作符。
结构指针->结构成员;
(*结构指针).结构成员;
MyStruct mystruct1;//自用管理
MyStruct *mystruct=new Mystruct;//手动管理
1.5 对象初始化
C++是强类型,即便是成员相同,但是类型不同也不能使用”mysruct1(mystruct1)”初始化。
定义一个struct类型:
struct User
{
int id; //id
char name[100]; //user name
char *home; //home directory
int passwd; //password
};
顺序初始化的特点是: 按照成员定义的顺序,从前到后逐个初始化;允许只初始化部分成员;在被初始化的成员之前,不能有未初始化的成员。
struct User oneUser = {10, "Lucy","/home/Lucy"};
初始化之后,oneUser各个成员的值为:
oneUser.id = 10;
oneUser.name = "Lucy";
oneUser.home = "/home/Lucy";
oneUser.passwd = 0;
允许只初始化部分成员;未被初始化的成员默认为0(指针类型的成员默认为NULL)。两种乱序初始化方法,即可以用在C代码中,也可以用在C++代码中。
2.class
2.0 存储方式
类名,变量名都在栈上;
类名 *指针名 = new 类名 //在堆上;
类的静态成员 静态区;
函数都在代码区,类的函数都是共享;
2.1
3.struct和class的区别
结构体实例(包括共用体)和类实例的初始化方法完全相同,二者都可以应用于继承层次中。不同点是结构体(包括共用体)默认成员为public,而类默认成员是private型的。
4.c与c++中 struct/class的区别
4.1 设置默认值
C++结构体struct中可以使用默认值;C 中结构体不能使用默认值;