C++ 2.5.1 处理类型:类型别名

类型别名

传统方式,使用 typedef, cpp11,可使用 using

typedef int mi; //int 别名 mi
mi xa = 88;
using mii = mi; //mi别名mii
mii xb = 88;
cout << (xa == xb) << endl; //output 1

指针类型别名

typedef char* ps; //指向 char 的指针; char* 的别名 ps;
char xx = 'X';
const ps str = &xx; //指向 char的 常量指针
*str = 'F'; //地址指向值可变
//str = &zz; //常量指针的地址不可变,本句会 error
cout << *str << endl;

如果将 ps 代表的 char* ,代入到 表达式 const ps str = &xx; 会得到 const char* str = &xx;
(指针写在紧靠类型后,还是变量前,都没有影响)
在上一节学的,这种形式,就是 常量指针,底层const,无法通过 *指针变量赋值。而实际上这里是可以赋值的。且无法改变指针变量的地址。这倒是符合指针常量,即顶层const的"无法改变变量自身(地址)"的特性了。

const ps *p; //常量指针的指针
p = &str;
cout << **p << endl; //输出 F

//既然 p 是常量指针的指针,重点是,它就是一个指针,可以修改地址,指向一个 char(常量)的地址
char zz = 'Z';
char * q = &zz;  //这里改成常量指针形式 char *const q = &zz; 也是一样的结果
p = &q;
cout << **p << endl; //输出 Z

这种指针类型别名,简直是个坑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值