C++关键字系列【一】:typedef、using、auto、decltype

本文详细介绍了C++中创建类型别名的三种方式:typedef、using以及C++11引入的auto和decltype。讨论了它们的使用场景、区别以及注意事项,包括typedef和using在函数指针、模板别名方面的差异,以及auto如何简化变量声明和decltype如何根据表达式推断类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

类型别名

什么是类型别名

类型别名是一个名字,使用类型别名可以让复杂的类型名字变得简单明了、易于理解和使用,还有助于程序员清楚地知道使用该类型的真实目的。
类型别名和类型的名字等价,只要是类型的名字能出现的地方,就能使用类型别名
目前有两种定义类型别名的方法,分别是typedefusing

typedef关键字

关键字typedef作为声明语句中的基本数据类型的一部分出现。含有typedef的声明语句定义的不再是变量而是类型别名

typedef的使用

  • typedef普通类型
typedef unsigned int u_int;//u_int是 unsigned int的同义词
typedef u_int *p;//p是unsigned int*的同义词
/*================使用===================*/
u_int i=10; //相当于unsigned int i=10
p p1=&i;   //相当于unsigned int*p1=&i
int j=20;
p1=&j; 		//错误,不能将int*转换为unsigned int*
  • typedef结构体
    可以使用 typedef 来为用户自定义的数据类型取一个新的名字。比如,可以对结构体使用 typedef 来给定义的数据类型起一个新名字,然后使用这个新名字来直接定义结构变量。
typedef struct people {
   
   
	string name;
	int age;
	string gender;
}student;
/*================使用===================*/
student stud1;//相当于people stud1
  • typedef函数指针
    typedef经常用于替换一些复杂的函数指针,说到函数指针,就必须先了解一下函数指针和指针函数。在一文搞懂函数指针这篇博客中详细介绍了什么是函数指针,什么是指针函数。

    回到typedef上,用typedef来定义这些复杂的类型,比如上面的函数指针
    声明格式:typedef 返回类型 (*新名字) (参数表)

    typedef int(*func)(int); //定义int(*)(int)的函数指针的别名为func
    func pfun; //直接用别名func定义int(*)(int)类型的变量
    
    int getVal(int n) //定义一个形参为int,返回值为int的函数
    {
         
         
    	cout << n << endl;
    	return n;
    }
    /*================使用===================*/
    int main()
    {
         
         
    	pfun = getVal; //把函数赋给指针
    	(*pfun)(5); //调用函数getVal,输出5
    	return 0;
    }
    

using关键字

using的使用

  • 使用命名空间
    为了防止名字冲突从而有了命名空间,我们可以通过使用using声明来指定使用哪个命名空间,这样后面再使用到该命名空间中的内容则无需加前缀命名空间名字::

    using namespace std;//释放整个命名空间到当前作用域
    using std::cout;    //释放某个变量到当前作用域
    
  • 类型别名
    using起别名的作用和typedef十分相似,都是使用别名声明来定义类型的别名,其使用方式也十分简单

    /*    using 别名=原先类型     */
    using student =</
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

倒地不起的土豆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值