• 结构体与共用体


    结构体

    什么是结构体

    结构体是C语言中的一种数据类型,它有如下特点

    1. 结构体是一种构造数据类型
    2. 把不同类型的数据组合成一个整体来自定义数据类型

    结构体的定义方式与结构体变量的声明

    //有名结构体 
    struct Student{
    	int num;
    	char name[30];
    } s1;
    
    //匿名结构体 
    struct Staff{
    	char name[30];
    	int sllary;
    };
    //使用define
    #define ds struct DefineStruct
    ds{
    	int i;
    };
    
    //使用typedef
    typedef struct date{
    	int year;
    	int month;
    	int day;
    } Date;
    
    

    结构体类型与结构体变量

    结构体类型与结构体变量概念不同,相当于java中的类,和具体类的实例

    1. 类型:不分配内存;变量:分配内存
    2. 类型:不能赋值、存取、运算等操作,变量可以
      结构体可嵌套,但防止递归嵌套
      结构体成员名可与程序中变量名相同,不会造成混淆

    结构体变量的初始化

    //像创建类一样,先创建结构体,再声明具体实例变量 
    struct person
    {
    	int num;
    	char name[20];
    };
    struct person pf={18,'pf'};
    //有点类似于c#中类的初始化器的概念,主要是为了让代码更加简洁 
    struct animal{
    	int weight;
    	char name[20];
    } lion={3,'xinba'}; 
    //匿名类+初始化器的形式,再度简化了代码
    struct {
    	int height;
    	char name[20];
    } cat{2,"tom"};
    

    结构体变量的引用

    这个知识点比较重要,在2017年的真题当中就有涉及,总共有3种引用方式:

    struct person
    {
    	int num;
    	int height;
    	int age;
    };
    struct person pf={18,171,200},
    *p=&pf;
      pf.num=20;				//结构体变量名.成员名
      p->height=180;			//结构体指针名->成员名
      (*p).age=300;				//(*结构体指针名).成员名
     printf("num=%d,weight=%d,age=%d",pf.num,p->height,(*p).age);
    

    共用体

    共用体的定义:共用体也叫联合体,与结构体类似,也是一种构造数据类型,但却有着不同的行为方式。一般至少由一种数据类型构成,所有成员引用的是内存中相同的位置

    定义方式如下,我的理解就是把一堆不一样的类型拼在一起,然后对于这个共用体可以放置成员内的所有类型,如例子中的int,char,float(不恰当的比方就是low一点的泛型)。然后存放变量的时候每次只能存放一种类型的,并且共用体union的内存大小取自成员中占用内存最大的那种类型。

    union data{
    	int i;
    	char ch;
    	float f;
    }a,b;
    
    union data2{
    	int i;
    	char ch;
    };
    union data2 x,y,z,*p,d[3];
    
    union{
    	int i;
    	char ch;
    }u,v,w;
    

  • 相关阅读:
    mysql学习日志
    Python学习day10 Javascript/Jquery
    Python学习day07 多线程多进程及主机管理
    Linux基本命令
    django 用户认证/Excel导入Mysql
    转:iptables详解
    Python django前端导入Excel脚本
    Python学习day08 分布式监控系统开发实战
    Subline Text2
    MySQL 常用函数分析
  • 原文地址:https://www.cnblogs.com/falcon-fei/p/11060182.html
Copyright © 2020-2023  润新知