一、结构体定义的几种方式

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 条评论

发表回复

您的电子邮箱地址不会被公开。