使用结构体是应注意一下问题:
1.声明结构体类型时,系统是不会为其分配内存空间的,只有当定义结构体时才为其分配内存空间。
2.结构体的内存分析:结构体所占内存空间依照“补齐法则”,其所占内存大小,一定是其最大成员类型的倍数,如果不足,则自动补齐。
3.声明结构体结束后,记得在大括号后边添加分号!!!
4.结构体的三种定义方式:
- //第一种:先声明结构体类型在定义结构体。
- struct person {
- int age;
- char *name;
- };
- struct person p1;
- //第二种:声明结构体类型的同时定义结构体。
- struct person {
- int age;
- char *name;
- } p1;
- //第三种:声明结构体类型的同时定义结构体,但是省略结构体类型名称。
- //确定:无法复用
- struct {
- int age;
- char *name;
- } p1;
复制代码 5.这样初始化结构体是错误的:
- struct person {
- int age;
- char *name;
- };
- struct person p1;
- p1 = {22 , "jack"}; //这样初始化是错误的!
复制代码 一下有三种正确的初始化结构体的方法:
- //方法一:
- struct person {
- int age;
- char *name;
- };
- struct person p1 = {22,“jack”};
- //方法二:
- struct person {
- int age;
- char *name;
- };
- struct person p1;
- p1.age = 22;
- p1.name = "jack";
- //方法三:
- struct person {
- int age;
- char *name;
- };
- struct person p1 = {.name="jack" , .age=22}; // 这样赋值就可以不按照结构体定义的顺序赋值了。
复制代码 6.结构体的作用域
结构体是有作用域的,具体说就是:
结构体类型只在其类型声明的代码块中有效!
|
|