目录
一、结构体定义的几种方式
https://blog.csdn.net/weixin_42445727/article/details/81190361
1. 先定义结构体类型,再定义结构体变量。
struct student{
char no[20]; //学号
char name[20]; //姓名
char sex[5]; //性别
int age; //年龄
};
struct student stu1,stu2;
//此时stu1,stu2为student结构体变量
2. 定义结构体类型的同时定义结构体变量。
struct student{
char no[20]; //学号
char name[20]; //姓名
char sex[5]; //性别
int age; //年龄
} stu1,stu2;
此时还可以继续定义student结构体变量,如:
struct student stu3;
3、不指定类型名而直接定义结构体变量
struct{
char no[20]; //学号
char name[20]; //姓名
char sex[5]; //性别
int age; //年龄
} stu1,stu2;
一般不使用这种方法,因为直接定义结构体变量stu1、stu2之后,就不能再继续定义该类型的变量。
4.用typedef定义结构体变量
typedef struct stdudent
{
char name[20];
int age;
}student_t;
上面的代码,定义了一个结构体变量类型,这个类型有2个名字:第一个名字是struct student;第二个类型名字是student_t.
定义了这个之后,下面有2中方法可以定义结构体变量
第一种: struct student student_1; //定义了一个student_1的结构体变量
第二种:student_t student_1 //定义了一个student_1的结构体变量
推荐在实际代码中使用第四种方法定义结构体变量。
二、结构体初始化的几种方式
https://www.jb51.net/article/91456.htm
三、结构体比较
https://blog.csdn.net/qq_44918090/article/details/123351346
四、packed修饰符
https://blog.csdn.net/weibo1230123/article/details/84106028
packed是字节对齐的意思。比如说int float double char它的总大小是4 + 4 + 8 + 1 = 17,但如果不用packed的话,系统将以默认的方式对齐(假设是4字节),那么它占4 + 4 + 8 + 4 = 20;(不足4字节以4字节补齐)。
五、c与c++结构体的区别
https://blog.csdn.net/m0_61629312/article/details/132116853
在C++中,结构体和类是非常相似的,它们都可以具有构造函数。
事实上,在C++中,结构体和类之间的唯一区别就是默认的访问权限不同。
- c++结构体成员变量要显示初始化
注意结构体构造函数要有函数体{}
struct StructName {
StructName():a(10),b(2),c(3){}
float a;
float b;
char c;
} ptr;
0 条评论