zoukankan      html  css  js  c++  java
  • 结构体与共用体

    结构体

    什么是结构体

    结构体是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;
    

  • 相关阅读:
    背景图像固定(背景附着)
    css背景图片位置
    2.使用第三种方式做一个多线程操作 3. 使用线程池做一个1到100的偶数之和 4.写一遍生产者与消费者模式 5 写一个字符串的单例设置模式(未完成) 6. 写一个简单工厂着模式
    简单写写
    说说JSON和JSONP区别
    web前端常见的面试题,基础知识点
    优秀网页设计_优秀Web设计的69条设计原则
    PostCSS_自动处理css3属性前缀
    用lnmp架构部署wordpress网站详细步骤
    使用html+css+js实现简易计算器
  • 原文地址:https://www.cnblogs.com/falcon-fei/p/11060182.html
Copyright © 2011-2022 走看看