深入理解C语言中的结构体

结构体定义(3种)

  • 声明结构体包括两步
    • 定义结构体
    • 声明相应结构体类型的变量(结构体能包含C语言允许的所有类型变量)
  • 法一:在定义结构体类型的同时说明结构体变量
struct 结构体标识符
{
    成员变量列表;
}变量名列表;
  • 法二:直接说明结构体变量
struct
{
    成员变量列表;
}变量名列表;
  • 法三:先定义结构体,再说明结构体变量
struct 结构体标识符
{
    成员变量列表;
};
struct 结构体标识符 变量名列表;

调用结构体:

  • 普通结构体
    . 成员变量的引用 结构体变量名.成员名
  • 结构体指针两种表示
    • (* 变量名).成员字段名 :点操作(.)比取值操作符(*)有更高的优先级,所以要加括号
    • -> 指针成员变量引用 结构体指针变量名字->成员名

初始化结构体(两种方法)

  • 在声明结构体类型时,不能指直接赋值,而是要定义结构体变量后才可以赋值。结构体是一种类型,而不是一个变量。
  • 声明结构体变量后,单独初始化每个成员
  • 通过集合符号对结构体变量进行初始化,使用花括号。变量之间用逗号隔开,成员字段按指定顺序查值并初始化。
  • 使用结构体指针之前,必须对其进行初始化
  • 结构体只是一种 类型,不是变量。

结构体嵌套

  • 一个结构体成员列表中嵌套另外一种数据类型的结构体,并声明该结构体类型的变量
struct Student{
    char name[20];
    char sex;
    int age;
    struct Teacher{
                    int num;
                    char subject[20];
                    char address[30];
                }teacher;
            }Stu;

  • 定义一个结构体数据类型时候,成员列表中可以定义若干个其他数据类型的结构体,并同时声明该类型的结构体变量
struct Student{
                char name[20];
                char sex;
                int age;
                struct Teacher{
                                int num;
                                char subject[20];
                                char address[30];
                                struct unit{
                                            char company[30];
                                            char company_addr[30];
                                           }units;
                              }teacher;
              }Stu;

猜你喜欢

转载自blog.csdn.net/breadheart/article/details/113482346