1.C语言 typedef的使用方法

描述作用

1.typedef主要通途给类型起一个别名,比如给int类型取个中文名字 zhengxingint。

2.typedef可以简化struct关键字

3.typedef可以区分数据类型

4.typedef提高代码的平台可移植性。

举例 取别名

cpp 复制代码
#include "stdio.h"
#include "string.h"
#include "stdlib.h"

void test1() 
{
	typedef int zhengxingint;//定义一个int 类型的别名,整型int
	
	zhengxingint i = 10; //使用别名定义一个局部变量
	
	printf("i = %d\n", i);//打印结果

}

int main() 
{
	test1();
	system("pause");
	return EXIT_SUCCESS;
}

运行结果

举例 取别名 struct

cpp 复制代码
#include "stdio.h"
#include "string.h"
#include "stdlib.h"


//创建结构体
//1.typedef 使用 简化结构体关键字
struct Person {
	char name[50];
	int age;
};
typedef struct Person myPerson;  

//2.简化给类型取别名
//语法:typedef 结构体 原名  别名
typedef struct Person2 {
	char name[50];
	int age;
} myPerson2;

void test2() 
{
	myPerson p_person = { "达帮主",18 };
	printf("name : %s  age : %d\n",p_person.name,p_person.age);

	myPerson2 p_person2 = {"达帮主",19};
	printf("name : %s  age : %d \n",p_person2.name,p_person2.age);
}


int main() 
{
	//test1();
	test2();
	system("pause");
	return EXIT_SUCCESS;
}

运行结果

举例 区分数据类型

cpp 复制代码
//区分数据类型
void test3() 
{
	char* p1, p2;
	printf("p1 : %d  p2 : %d\n",sizeof(p1),sizeof(p2));
}

可以查看以上定义 首先p1 和 p2是由区别的。p1是指针,p2是char类型,可以通过sizeof来看看

运行结果:

p1的大小是 4 ,p2 的大小是1 。指针按照每个编译器分配字节有些是分配 4个字节,有些8个字节。

可以通过C++来确认类型

cpp 复制代码
#include "iostream"

using namespace std;

int main()
{

	char* p1, p2;

	printf("p1 类型 %s \n", typeid(p1).name());

	printf("p2 类型 %s \n", typeid(p2).name());

	system("puase");
	return EXIT_SUCCESS;
}

运行结果

区分数据类型

cpp 复制代码
//区分数据类型
void test3() 
{
	char* p1, p2;
	printf("p1 : %d  p2 : %d\n",sizeof(p1),sizeof(p2));

	//区分类型
	typedef char* PCHAR;
	PCHAR pp1, pp2; //都是char*类型
	printf("pp1 : %d  pp2 : %d\n", sizeof(pp1), sizeof(pp2));

}

运行结果

不按照这种方法定义也行,可以通过 char *p1,*p2 ,也是可以的

举例子 提高代码可移植性

在早期存在一下类型 long long,如果我们在当前的系统中可以正常使用long long,但是换一个机型可能不支持long long需要修改,这个时候,如果10w行long long 这样需要修改10w次。如果使用typedef那么移植性就很强,只要修改定义就行

案例

cpp 复制代码
//提高可移植性
int typedef MYINT;  //typedef long long MYINT ;只需要替换类型 long long 即可
void test4() 
{
	long long a1;
	long long a2; 
	//...

	MYINT a3;//如果主体发生变化,只需要改主体的类型即可
	MYINT a4;
}

int main() 
{
	//test1();
	//test2();
	test3();
	system("pause");
	return EXIT_SUCCESS;
}
相关推荐
点云侠10 小时前
解决Visual Studio 2022编译工程速度慢的问题
开发语言·c++·ide·算法·计算机视觉·visual studio
ajassi200011 小时前
开源 C++ QT Widget 开发(十三)IPC通讯--本地套接字 (Local Socket)
linux·c++·qt·开源
Q741_14711 小时前
C++ 前缀和 高频笔试考点 实用技巧 牛客 DP34 [模板] 前缀和 题解 每日一题
开发语言·c++·算法·前缀和·牛客网
YaoYuan932311 小时前
C++ 容器——unordered_xxx
c++
凤年徐12 小时前
C++类和对象(上):从设计图到摩天大楼的构建艺术
c语言·开发语言·c++·类和对象
一只鱼^_12 小时前
牛客周赛 Round 108
数据结构·c++·算法·动态规划·图论·广度优先·推荐算法
愚润求学14 小时前
【贪心算法】day6
c++·算法·leetcode·贪心算法
沐怡旸14 小时前
【底层机制】右值引用是什么?为什么要引入右值引用?
c++·面试
scx2013100415 小时前
P13929 [蓝桥杯 2022 省 Java B] 山 题解
c++·算法·蓝桥杯·洛谷
CYRUS_STUDIO15 小时前
LLVM 不止能编译!自定义 Pass + 定制 clang 实现函数名加密
c语言·c++·llvm