学习笔记(05):C语言 从小白到大神: 入门篇-共用体、枚举类型、typedef

立即学习:https://edu.csdn.net/course/play/8088/165751?utm_source=blogtoedu

/* 第十章 结构体和共用体
   一。共用体  又叫联合
   把几种不同类型的变量存放到同一段内存单元中(同一个内存地址开始的单元中)
   几个变量共同占用同一段内存的结构,就叫做共用体。
   定义形式:
   union 共用体名
   {
        成员列表
   }
   //变量列表
   ;
   union 结构体名 变量名列表;
   
   //结构体和共用体明显不同
   结构体变量的内存是各成员字节对齐之后的结果,c语言编译系统为了一些编译时的效率考虑,(不能保证被4整除或者哪个数整除的话,会多分配出一些字节,以保证字节对齐)
   可能会额外多分配出一些字节来,以保证叫字节对齐这么一个问题,是考虑到运行的效率问题
   共用体所占的内存长度等于最长的成员长度
   几点说明:
   a)共用体变量的引用
   a.cname;
   a.carnum;
   b)共用体变量的特点
   1.同一段内存放几种不同类型的成员,但每一个瞬间只能存放其中一种,说白了,就是每个瞬间只能有一个成员起作用,其他成员不起作用。并不是同时都存在和都起作用;
   程序代码在最后给哪个成员赋值,哪个成员就起作用。
   c)共用体变量的地址和其他成员的地址都相同;
   &a,&a.carnum;
   d)共用体变量不能在定义的时候初始化
   最好不要用,随时用随时初始化
   e)不能把共用体作为函数参数,也不能让函数带回共用体变量
   二.枚举类型
   在main函数外面
   enum color
   {
        Red,//枚举常量(当成一个枚举常量)
        Green,
        Blue,
        Yellow
   };

   定义2个枚举类型变量
   enum color mycolor1,mycolor2;
   说明:
   a)枚举:就是将值意义列举出来,那么mycolor1,mycolor2变量的值只限于列出来的这些值的范围内:
   b)可以直接定义枚举变量,不要枚举名,这就要直接定义枚举变量就行
   c)这些Red,Green,Blue这些都是枚举常量,记住,他们常量,值不能被改变,枚举常量,看成是整型数据,
   e)定义枚举类型时,可以改变这里的枚举常量的值,后面的值依次增加
   mycolor = Red;//首个变量就变成了Red的值了;
   f)枚举值:就理解成整型值
   g)枚举值可以赋给一个整型
   三):用typedef来定义类型
   //int,char,float,double,结构体,共用体,枚举类型,
   我们可以用typedef来定义新的类型名(不是用来定义变量的)来代替已经有的类型名
   typedef int INTEGER;
   INTEGER myuni, a, b c;

   typedef struct date
   {
         int month;
         int day;
         int year;
   }DATE;
   //struct date birthday;以前是这样
   DATE birthday;
   DATE *p;
   变形,大家记一记
   typedef int NUM[100];定义为整形数组;
   NUM n;//等价于int n[100];

   typedef char *PSTRING;
   PSTRING p,q;//char *p,*q;

   typedef int (*POINTER)();//定义POINTER为指向函数的指针类型,该函数返回的是整型值;
   POINTER p1,p2;

   //总结一下 typedef这种语句怎么写,以定义一个整形数为例,
   第一步;先写出常规的整形数组的定义方法
   int n[100];
   第二步:将变量名n替换成自己想用的类型名
   int NUM[100];
   第三步 在前面加上typedef
   typedef int NUM[100];
   NUM a,b,c,d;

   说明:
   a)typedef 中用的类型别名一般都大写;
   b)typdef是用来定义类型名的,不是用来定义变量的
   c)typdef只是对已经存在的类型增加一个类型名,并没有创造
   d)typdef是编译的时候处理的;
   可执行文件:编译(预处理(#define,#include,#ifdef),编译,汇编),链接;
   e)typedef主要作用:程序的通用性和可移植性

   typdef int INTGER;
   typdef __int64 INTGER
   
   
   */

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值