C语言之使用typedef给数据类型换个名儿

typedef关键字

除了可以直接使用C语言提供给我们的数据类型名(如int,char,float,double等)和我们自己定义的结构体类型名以外,还可以使用typedef指定新的数据类型名来代替已有的类型名。换句话说,typedef的作用就是对已有的数据类型起别名。例如:

#include <stdio.h>

typedef int Integer; // 给int取了个别名叫Integer,下面就可以用Integer来定义整形变量
typedef char * String; // 给char *取了个别名叫String,下面就可以用String来定义字符型指针变量

int main()
{
    
    
	Integer i = 10; // 等同于 int i = 10;
	String p; // 等同于 char * p;

	return 0;
}
#include <stdio.h>

typedef struct Student
{
    
    
	char name[100];
	int age;
	float score;
}ST, * PST; // 给 struct Student 起了个别名ST,给 struct Student * 起了个别名叫PST

int main()
{
    
    
	ST stu;		// 等同于 struct Student stu;
	PST pStu;	// 等同于 ST * pStu; 也等同于 struct Student * pStu;

	return 0;
}

需要注意的是,C语言中允许原结构体名与使用typedef重新命名的结构体名相同,例如:

#include <stdio.h>

typedef struct Student
{
    
    
	char name[100];
	int age;
	float score;
}Student; // 此时的 Student 就等同于 struct Student

int main()
{
    
    
	Student stu;	// 等同于 struct Student stu;
	
	return 0;
}
  • 为什么要给数据类型重新命名?
  • 首先是为了方便程序员编程,例如当我们定义结构体变量时,如果总是要先写struct再写结构体名的话,定义结构体变量就变得十分繁琐,每次都要写一遍struct,而且写代码时很容易忘记写它,而且这样代码也会显得比较累赘,如果我们可以用很短的几个字母来表示一个很长的结构体名,那我们何乐而不为呢?
  • 其次是为整个程序的通用性,如果一个程序最初的存储数据的变量都是整型,在程序中自然定义的都是整型变量,但如果某个时候想要把所有所有定义的数据变量都改为浮点型,工作量可想而知,但是有typedef来帮忙,只需要一步就可以搞定。由于我们最开始要存储的是整型数据,那我们可以将int先重新命名为ElemType(当然名字可以随便取,这里取为ElemType只是方便在数据结构中使用),即,typedef int ElemType;,当我们想把这些数据对应的变量改为浮点型时,我们只需要做这样的操作即可typedef float ElemType;,相较一个一个去修改变量的类型而言,使用typedef真的很省事!
  • 再有,为了在编程时达到代码即注释的目的,厉害的程序员往往会对数据类型重新命名。
  • 如果不是很理解为什么要这样的话,可以先在脑海里留个印象,需要用到这部分内容时再回来仔细分析一番,大家可以多敲多看,其实在编程过程中就会逐渐明白这样做的好处。

猜你喜欢

转载自blog.csdn.net/weixin_65334260/article/details/125728122
今日推荐