C\C++_关键字_typedef使用场景

1. 重命名结构体名称

typedef struct Person
{
	char name[20];
	int age;
}MyPerson;

2. 重命名指针

typedef char * PCHAR;

void Test01()
{
	char *p1, *p2;
	cout << typeid(p1).name() << endl;
	cout << typeid(p2).name() << endl;
	
	PCHAR p3, p4;
	cout << typeid(p3).name() << endl;
	cout << typeid(p4).name() << endl;
}

3. 重命名数据类型,增强跨平台程序的可移植性

typedef long long MyLongLongType;  //就是当其它平台没有long long 这个数据类型的时候,可以在该处直接更改,而不需要更改几千行甚至几万行代码中所涉及到的所有的long long类型

void Test02()
{
	MyLongLongType llAge = 10;
}

4. 定义数组指针

//********************【数组指针】:它是指针,指向数组的指针**********************************。
//数组的类型由元素类型和数组大小共同决定:int array[5]  的类型为  int[5];C语言可通过typedef定义一个数组类型:

void _cdecl Test01()
{
	int arr[] = { 1, 2, 3, 4, 5 };
	
	//定义一个数组类型ARRAY_TYPE,可以把int arr[5]看成一个整体、一个ARRAY_TYPE类型的变量
	typedef int(ARRAY_TYPE)[5]; 
	ARRAY_TYPE myArr;
	for (int i = 0; i < 5; i++)
	{	
		myArr[i] = i + 10;
	}
	for (int i = 0; i < 5; i++)
	{
		printf("%d\n", myArr[i]);
	}

	//对数组名取地址代表指向整个数组的指针
	//1. *pArr 表示拿到pArr指针指向的整个数组(即数组名,代表数组首地址)
	ARRAY_TYPE *pArr = &myArr;
	pArr = &arr;
	for (int i = 0; i < 5; i++)
	{
		printf("%d\n", *(*pArr + i));
	}
	
	//2. 直接定义数组指针类型 ,可以把int arr[5]看成一个整体、一个(*ARRAY_POINTER)类型的变量,所以ARRAY_POINTER指针即指向该类型变量,即指向整个数组;*ARRAY_POINTER就是拿到整个数组(数组名)
	typedef int(*ARRAY_POINTER)[5];
	ARRAY_POINTER pArray = &arr;

	//3. 直接定义数组指针类型
	int(*pArrParam)[5] = &arr;
}

5. 为类模板的具体化指定别名

typedef std::array<double, 12> DArr;
DArr arr;  //< arr 是std::array<double, 12> 类型
  • c++11 新增了一项功能——使用模板提供一系列额别名
template<typename T> 
  using ArrType = std::array<T,12>;
  
ArrType<int> nArr; 		//<	是std::array<int, 12> 类型
ArrType<double> dArr; 	//<	是std::array<double, 12> 类型
  • c++11也允许将语法using=用于非模板,用于非模板时,这种语法与常规typedef等价:
typedef const char* pc1;
using pc2 = const char*;
typedef const int *(*pal)[10];
using pa2 = const int *(*)[10];
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值