typedef

typedef char * pchar;
const pchar p = "Hello!";
p的类型是什么?如果你以为是 const char * 类型,那你就错了!
p的真正类型是 char * const,也就是说,const pchar p 与 char * const p 是等价的。
typedef不是像宏那样纯粹文字代换,它有解释语义的功能。让我们来看一个简单例子:
const int i = 5 表明 i 是一个常量,同理可得,const pchar p = "Hello!" 中的p也是一个常量,也就是说编译器把pchar作为一个数据类型,而不管它内部是否包含指针。
const pchar p和const int i本质上没有区别,都是对变量进行只读限制,只不过此处变量p的数据类型是我们自己定义的而不是系统固有类型而已。因此,const pchar p的含义是:限定数据类型为char *的变量p为只读。
这样可以获得语义的一致性,例如当用户进行如下声明时会得到相同的结果:
const pchar p 等价于 pchar const p
const int i 等价于 int const i
而宏则不然:
#define pchar char *;
const pchar p 不等价于 pchar const p
记住:不管什么时候,只要为指针声明 typedef,那么都要在最终的 typedef 名称中加一个 const,以使得该指针本身是常量,而不是对象。
typedef const char * cpstr;
const使用的基本形式:const char m; 限定m不可变。
const char *pm; 限定*pm不可变,pm是可变的。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值