C语言--typedef的使用


 前言

在C语言中使用结构体时必须加上struct这个关键字,那有没有办法省略这个呢?要想达到这个目的就 需要用到关键字typedef,顾名思义”类型定义”。 typedef 数据类型 新的别名; 它是用来操作数据类型。其主要作用有两个: 1.给一个较长较复杂的类型取一个简单的别名。 2.给类型取一个和问题相关的别名。 这两种情况在生活中都非常常见,例如第1种情况,中华人民共和国简称中国,第2种情况,你的同学非常 的漂亮给她起个外号叫”大美丽”。 第一种情况的使用如下:

int main()
{
	typedef unsigned long long int uint64;//给无符号长长整型取别名叫uint64
	//取一个别名  u代表无符号  int代表整形  64代表64位

	unsigned long long int a = 10;  //定义一个无符号长长整型
	uint64 b = 20;   //定义一个无符号长长整型


	return 0;
}

 上面的代码给unsigned long long int数据类型取了一个简单的别名uint64,其中u表示符号,int表示 整数,64表示64位。

typedef unsigned long long int uint64;//给无符号长长整型取别名叫uint64
typedef int* Pint;//给整型指针int * 取别名叫Pint
typedef int Arr[10];//这是什么呢?
typedef int (*Pfun)(int, int);//这是什么呢?
int main()
{
	int a = 10;
	Pint p = &a;
	printf("%d\n", sizeof(Arr));
	return 0;
}

 第2行代码给int*类型取了一个别名Pint,在第8行Pint定义的变量就是int*这种数据类型了。 对于比较复杂的类型如3,4行就不容易理解了。那怎么办呢?关键是牢记typedef是用来定义数据类型 的。 对于复杂的类型可以先把typedef去掉,看看是定义一个什么类型的变量,然后加上typedef它就由这种 类型的变量提升为这种数据类型。

C语言--typedef的使用_第1张图片

 利用typedef定义的新类型使用如下:

typedef int* Pint;//给整型指针int * 取别名叫Pint
typedef int Arr[10];//Arr为整数数组类型
typedef int (*Pfun)(int, int);//Pfun为函数指针类型
int Max(int a, int b)
{
	return a > b ? a : b;
}
int main()
{
	int a = 10;
	Pint p = &a; //p为指针变量
	Arr arr = { 1,2,3,4,5,6,7,8,9,10 };//arr为数组
	Pfun pf = Max;//pf为函数指针变量
	printf("%d\n", pf(10, 20));
	return 0;
}

 第13行,Pint为整型指针类型,那么它定义的变量就是整型指针变量。 第15行,Arr为整型数组类型,那么它定义的变量就是整型数组变量。 第17行,Pfun为函数指针类型,那么它定义的变量就是函数指针变量。 typedef的第二种情况: 给类型取一个和问题相关的别名。这种方式最典型的应用是size_t和time_t这 两种类型。size_t应用在计数方面,time_t应用在时间方面。在visual studio2022中这两者的定义如下:

C语言--typedef的使用_第2张图片

回到本节提到的问题,如何在使用结构体时省略struct这个关键字呢?可以按照如下方法定义结构体。 例如:

//第一个方式
struct A
{
	int a;
	char b;
};
typedef struct A A;//给struct A起个别名叫A
//第二种方式
typedef struct B
{
	char a;
	int b;
}B; //给struct B起个别名叫B
int main()
{
	A aa = { 10,'x' }; //直接使用A
	B bb = { 'y',20 }; //直接使用B
	return 0;

创作不易, 如果这份博客对你有帮助,可以给博主一个免费的点赞以示鼓励。

欢迎各位帅哥美女点赞评论⭐️收藏⭐️,谢谢!!!

如果有什么疑问或不同的见解,欢迎在评论区留言哦。

祝各位生活愉快⭐️

你可能感兴趣的:(C语言学习,算法)