如何写typedef类型别名

之前无论在阅读带有typedef的语句或者自己写一个typedef语句时,都会很麻烦。
最近有空看了一个他的详细用法,总结出了一个自己的想法:

例如:、

//对于一个二维数组
typedef int (*int_array)[4];
typedef int *int_point;
int a[2][4] = { { 1,2,3,4, },{ 5,6,7,8, } };
for (int_array p = a; p != a + 2; ++p)
{
    for (int_point q = *p; q != *p + 4; ++q)
    {
        cout << *q << endl;
    }
}

如何阅读类型别名?

第一行的typedef int (*int_array)[4];该怎么理解他呢?
可以这样看:去掉开始的typedef,只保留下int (*int_array)[4];
此时把int_array看成一个变量的名字,这个语句就变成一个声明变量的语句。
这就可以看出来int_array是一个int (*)[4]类型的变量了。

同样的,对于第二行的typedef int *int_point;语句,可以用相同的方式理解:
去掉typedef后,保留下int *int_point;
可以看出int_point是一个int* 类型的变量。

怎么写带有typedef的语句?

其实写typedef语句的过程和阅读过程正好相反:
1、如果要对一个数据类型申请一个别名,首先写出一个 申请一个该类型的变量的语句;
2、将变量名字替换成你自定义的类型名;
3、在开头加上typedef即可。
例如:

//还是以二维数组为例
int a[2][4] = { { 1,2,3,4, },{ 5,6,7,8, } };

如果我想对a的类型取一个别名,则需要先确定a的类型;

a = &a[0];
因此a是一个一维数组的指针;
所以a的类型是 int (*)[4]

按照步骤1,写出一个声明该类型变量的语句:

int (*p)[4]; //声明语句

接着按照步骤2,将变量名替换成自己自定义的类型名。

int (*int_array)[4]; //将变量名替换成自己自定义的类型名。

按照步骤3,在开头加上typedef即可。

typedef int (*int_array)[4]; //在开头加上`typedef`即可。

最后补充一个笔记,也是自己经常搞混的地方

typedef int *type[4];
typedef int (*type1)[4];

cout << sizeof(type) << endl;  //输出16,type是一个包含有四个指针的一维数组
cout << sizeof(type1) << endl; //输出4,type1是一个数组指针
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值