起别名即为使用typedef:
typedef struct NAMENOTE { int id; char *name; char *tel_name; }NameNote;(1).struct+结构体名+变量名 = {}; (2).结构体别名+变量名 = {};
struct NAMENOTE c= {1, "C", "111"}; NameNote python = {2, "python", "222"};类似于python中的字典类型,不过是需要提前申明key值的字典,结构体的初始化相当于给字典的key值赋上value值,因此可对其中每一个属性进行改值操作。
c.id = 111; c.tel_num = "110";通过指针修改结构体的属性:
//“笨”方法 (*p_c).id = 111; (*p_c).name = "C_C++"; //结构体指针专有方法 p_c->id = 222; p_c->name = "C++";对于一个结构体来说,其中具有各种各样的基本数据类型,那么该如何判断一个结构体类型所占空间的大小呢? 首先找出该结构体中所占空间最大的基本数据类型,按每行都具有该基本数据类型所空间大小顺序填充,每行不超过最大类型所占的空间。 比如1中所声明的结构体,其中占空间最大(32位)的是int,char *,都为4个字节,因此该结构体的大小为16字节。 查看结构体类型所占空间可以使用关键字sizeof。
例1.struct AA struct BB { { int a; char a; double b; int b; char c; char c; char *d; char *d; }; };32位系统下。 解:AA中所占空间最大的基本数据类型是double,为8个字节,第三行的char c占一个字节,char *d占四个字节,第三行共有8个字节,可以装下c和d,故AA的大小为24字节;BB中所占空间最大的基本数据类型是int和char *,且都为4个字节,故BB占16字节空间。
例2:struct CC { int a; int b[5]; char c; };解:由于int b[5]不是基本数据类型,故最大为int,占4个字节,int b[5]共占20个字节,char c占4个字节,一共28字节。
经过上面两个例题可以说明为什么第六点着重强调基本数据类型。
