9.1结构体类型和结构体变量

9.1.1结构体类型定义

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

struct  结构体类型名称

{

  数据类型  成员名1;

  数据类型  成员名2;

  .

  .

  .

  数据类型  成员名n;

}

struct stu_info
{
    char name[10];
    int num;
}

9.1.2结构体变量的定义

1、先定义结构体类型,再定义结构体变量

struct stu_info stu1,stu2

2、在定义结构体同时定义结构体变量

struct stu_info
{
    char mane[10];
    int num;
}stu1,stu2;

3、直接定义结构体变量

struct
{
    char name[10];
    int num;
}stu1,stu2;

9.1.3结构体变量初始化

1、在定义结构体类型和结构体变量的同时,对结构体变量初始化

struct stu_info
{
    char mane[10];
    int num;
}stu={"Way",1870212};

2、定义好结构体后,对结构体进行初始化

struct stu_info
{
    char mane[10];
    int num;
};

struct stu_info stu={"Way",1870212};

9.1.4结构体变量的引用

结构体变量名.成员名;

stu.name;

9.2结构体数组

9.2.1结构体数组定义

1、先定义结构体类型,再定义结构体数组

struct stu_info
{
    char mane[10];
    int num;
};
struct stu_info stus[20];

2、在定义结构体类型同时定义结构体数组

struct stu_info
{
    char mane[10];
    int num;
}stus[20];

3、直接定义结构体数组

struct
{
    char mane[10];
    int num;
}stus[20];

9.2.2结构体数组的初始化

1、先定义结构体数组,然后初始化

struct stu_info
{
    char mane[10];
    int num;
};
struct stu_info stus[3]={{"one",1870212},
                         {"two",1870213},
                         {"three",1870214}
                        };

2、在定义结构体数组的同时,对结构体进行初始化

struct stu_info
{
    char mane[10];
    int num;
} stus[3]={{"one",1870212},
           {"two",1870213},
           {"three",1870214}
          };

 9.2.3结构体数组的引用

数组元素名称.成员名
stus[i].name

9.3结构体指针变量

9.3.1结构体指针变量

struct stu_info stu={"Way",1870212};
struct stu_info *p=&stu;

当程序中定义一个指向结构体变量的指针后,可通过“指针名->成员变量名”的方式来访问结构体变量中的成员。

struct stu_info stu={"Way",1870212};
struct stu_info *p=&stu;
printf("%s\n",p->name,p->num);

9.3.2结构体数组指针

与结构体指针使用基本相似:

struct stu_info stus[3]={{"one",1870212},
                         {"two",1870213},
                         {"three",1870214}
                        };  

struct stu_info *p=&stus;          

9.4结构体类型数据在函数间传递

9.4.1结构体变量作为函数参数

#include<stdio.h>
#include<stdlib.h>
struct stu_info 
{
    char name[10];
    int num;
}
void print_info(struct stu_info stu)
{
    
    printf("%s%d\n",stu.name,stu.num);
}
void main()
{
    struct stu_info s={"Way",1870212};
    print_info(s);
}

 

9.4.2结构体数组作为函数参数

#include<stdio.h>
#include<stdlib.h>
struct stu_info 
{
    char name[10];
    int num;
}
void print_info(struct stu_info stu[])
{
    for(int i;i<2;i++)
    {
    printf("%s%d\n",stu[i].name,stu[i].num);
    }
}
void main()
{
    struct stu_info s[2]={{"One",1870212},
                                    {"Two",1870213}
                                  } ;  
    print_info(s);
}            

 

9.4.3结构体指针作为函数参数

#include<stdio.h>
#include<stdlib.h>
struct stu_info 
{
    char name[10];
    int num;
}
void print_info(struct stu_info* stu)
{
    
    printf("%s%d\n",stu->name,stu->num);
}
void main()
{
    struct stu_info s={"Way",1870212};
    print_info(&s);
}

9.5  union共用体

共用体是一种特殊的数据类型,它允许多个成员使用一块内存。灵活地使用共用体可以减少程序的所使用的内存

9.5.1共用体类型的定义

union  结构体类型名称

{

  数据类型  成员名1;

  数据类型  成员名2;

  .

  .

  .

  数据类型  成员名n;

}

union date
{
    int m;
    float n;
    char c;
};

9.5.2共用体变量的定义

1)先定义共用体类型,再定义共用体变量

union date
{
    int m;
    float n;
    char c;
};
union date a,b;

2)在定义共用体的同时定义共用体变量

union date
{
    int m;
    float n;
    char c;
}a,b;

3)直接定义共用体变量

union 
{
    int m;
    float n;
    char c;
}a,b;

9.5.3共用体变量的引用和初始化

在共用体变量定义同时只能对第一个变量初始化

union 共用体类型名 共用体变量={第一个成员的类型值};
union date a={8};

完成初始化后,即可对共用体进行引用

a.m;//引用共用体a中的成员m
p->m//应用共用体指针变量p所指向的成员变量m

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄