C++ typedef 用法详解

C++ typedef 深入理解与应用
本文详细介绍了C++中的typedef关键字,用于创建类型别名,提高代码可读性。包括如何定义数据类型别名、结构体别名、实现平台无关的类型以及简化复杂的声明。还特别讨论了typedef在常量指针使用中的注意事项,指出typedef可能导致的混淆,如常量指针的递增操作问题。

typedef是替一个对象取一个别名,以此增强程序的可读性。

1 定义一种数据类型的别名

typedef int INT;  //定义int类型的一个别名INT。注意:末尾的分号

typedef char* pStr;

2 定义结构体的别名(很久远的事情了,现在C++已经不存在这个问题)

struct sPositon     //结构体定义
{
    int x;
    int y;
};
struct sPositon p;  //定义变量

如上所示,定义变量时还是加struct关键字,比较繁琐。

typedef struct sPosition  //定义结构体
{
    int x;
    int y;
}POINT;
POINT p;                 //定义结构体变量

如上所示,省去了struct关键字,但是这个在C++中已经不需要了

3 定义与平台无关的类型

如某一平台支持int类型,但不支持long类型。则可以使用typedef定义一个支持类型的别名,程序中使用该别名声明变量。
这样跨平台时,我们只使用极小的代价。标准库中广泛使用。

4 为复杂的声明定义一个简单的别名

例如函数指针:typedef int (*SUM) (int, int)。SUM是定义的别名,表示的是一个指向函数的指针,该函数有两个int类型的参数,返回一个int类型的值。
则SUM类型的对象可以指向任何符合上述规则的函数。例如:

#include<iostream>
using namespace std;

typedef int (*SUM)(int,int);
int fun0(int a,int b);
int fun1(int a,int b);
int main()
{
    A a;
    a = fun0;
    a(1,2);
    a = fun1;
    a(4,5);
    return 0;
}
int fun0(int a,int b)
{
    cout<<a+b<<endl;
    return a+b;
}
int fun1(int a,int b)
{
    cout<<a+b<<endl;
    return 0;
}

5 typedef需要注意的事项-常量指针

例如:

typedef char* pStr;
const char* p1 = "cui";
const pStr  p2 = "cui";
p1++;    //正常
p2++;    //编译报错

p1和p2都是常量指针,即指针指向的内容不能修改,而指针所指地址是可以修改的。
p1++,不用解释,因为常量指针是可变的。
p2是我们定义的别名,而不是系统固有类型,编译器在编译时,会认为p2是常量,不可修改,所以p2++会报错。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值