一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第十天,点击查看活动详情。
知识点8--共用体
接上篇,这里我们学习共用体~(注:学习笔记)
含义
在进行某些算法的C语言编程的时候,需要使几种不同类型的变量存放到同一段内存单元中。也就是使用覆盖技术,几个变量互相覆盖。这种几个不同的变量共同占用一段内存的结构,在C语言中,被称作“共用体”类型结构,简称共用体,也叫联合体。
用typedef定义类型
-
用typedef声明新的类型名来代替已有的类型名
a. 声明Integer为整型
typedef int Integerb. 声明结构类型
typedef struct{ int month; int day; int year; }DATE;输出结构体中元素:
int main(){ DATE data_one; data_one.month = 12; data_one.day = 31; data_ont.year = 2022; printf("%d - %d - %d \n",data_one.year,data_one.month,data_one.day); } //2022 - 12 - 31c. 声明NUM为数组整型类型
typedef int NUM[100]; int main(){ NUM num = {0}; printf("%d\n\n",sizeof(num)); } //400d. 声明STRING为字符指针类型
typedef char* P; int main(){ P p1; p1 = "I love China!"; printf("%s",p1); } //I love China!e. 声明POINTER为指向函数的指针类型,该函数返回整型值
typedef void (*P)(); void fun(); int main(){ P p1; //void (*p1)(); char a[20] = "I love China!"; printf("%d %d\n",a,&a); p1 = fun; // p1 = &fun; 也可以 //p1是指针指向的函数,fun也是函数,相当于fun的函数变成了p1的函数,所以要调用 p1(); //调用函数 } void fun(){ printf("I love China!\n"); }
使用方法
- 先按定义变量的方法写出定义体
- 将变量名换成新类型名(例如:将i换成COUNT)
- 在最前面加typedef(例如:typedef int COUNT)
- 然后可以用新类型名去定义变量(例如:COUNT i,j;)
对typedef的一些声明
-
用typedef可以声明各种类型名,但不能用来定义变量;
-
用typedef只是对已经存在的类型增加一个类型名,而没有创造新的类型;
-
当不同源文件中用到同一类型数据时,常用typedef声明一些数据类型,把他们单独放在一个文件中,然后在需要用到他们的文件中用#include命令把它们包含进来;
-
使用typedef有利于程序的通用与移植;
-
typedef与#define:
a. 有相似之处:例如:typedef int COUNT;#define COUNT int的作用都是用COUNT代表int。
b. 不同之处:#define是在预编译时处理的,他只能作简单的字符串替换;而typedef是在编译时处理的。实际上他并不是做简单的字符串替换,而是采用如同定义变量的方法那样来声明一个类型。
typedef (int*) p1; #define p2 int*
声明
本篇是跟着b站上的小甲鱼视频学习时候做的笔记,方便以后复习,希望每天都能进步一点点!!!
链接附上:C语言学习之小甲鱼视频链接