c++ typedef 关键字与 typedef struct

c++中,经常有一些莫名的数据类型,不像java等,数据类型都是明明白白写出来的,比如 int long char等等。然而c++,可以对数据类型进行重命名,这样,你就可以自己命名你需要的数据类型了。最简单的例子

int main()
{
	typedef int alias;
	alias i = 100;
	cout << i << endl;
	return 0;
}

这样,就把大家熟知的int类型变为了只有自己知道的alias类型了,是不是很简单而且很灵活?之所以可以自定义数据类型,是因为c++有指针的存在,指针多了可能让数据类型名字变得冗长,很难操作。所以用别名轻松搞定。例如

int main()
{
	int a = 88;
	int*b;
	b = &a;
	int **c;
	c = &b;
	typedef int *** s;
	s d;
	d = &c;
	cout << ***d << endl;
	return 0;
}

这样,把int*** 类型重命名为s,再用s声明一个d,给d赋值,同时打印出***d,结果输出88.
同时,typedef 还可以重命名函数指针类型。如下

int add(int a,int b)//声明函数
int (*p)(int ,int)//定义一个函数指针
p=add;//赋值函数指针
typedef void (*Callback)(int,const char *)//重命名函数指针类型
Callback cb=add;

如上面代码展示,如果不使用typedef,那么只能用来定义一个函数指针。如果使用typedef ,你可以使用typedef 关键字重命名的类型,去定义函数指针变量,是不是很方便?
在这里补充一下声明与定义的区别,对于函数,很明显可以区分开声明与定义,即没有方法体({}大括号就是方法体)的,我们可以理解为声明,有方法体的,我们可以理解为定义。然而变量的声明定义,却没有分那么详细

extern int a;//声明
int a;//声明定义,但未初始化

一般情况下,只有加extern的才算是声明,其他的都算是定义。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值