码迷,mamicode.com
首页 > 其他好文 > 详细

typedef 与指针、多维数组

时间:2014-05-08 12:52:54      阅读:319      评论:0      收藏:0      [点我收藏+]

标签:style   blog   class   code   java   color   

1.在typedef中使用指针往往会带来意外的结果。如下:

bubuko.com,布布扣
typedef string *pstring;
const pstring cstr;
bubuko.com,布布扣

绝大数人刚开始都会认为cstr是一种指针,它指向const对象,即const pstring cstr 等价于const string *cstr,其实,这是不对的,错误的原因在于单纯地将typedef当做文本扩展了。

首先,我们要认识到pstring它是一个类型,表示的是指向string的指针。声明const pstring时,const修饰的是pstring这个类型本身(修饰的是指针),两者结合起来,即表示指向string的const指针这种类型。最后用const pstring类型来修饰标识符cstr,表明cstr是一个指向string的const指针。原定义可写为:string *const cstr。

其实,我们不需要每次都分析的这么痛苦,因为,在C++中const限定符既可以放在类型前,也可以放在类型后:

bubuko.com,布布扣
string const s1;    // s1 and s2 have same type,
const string s2;    // they‘re both strings that are const 
bubuko.com,布布扣

所以,下次遇到这样不确定的类型判断时,就const放在诸如pstring类型的后面即可,转换为pstring const cst;

 

2.用typedef简化指向多维数组的指针

typedef类型定义可使指向多维数组元素的指针更容易读、写和理解。以下程序用typedef为数组ia的元素类型定义新的类型名:

bubuko.com,布布扣
int ia[3][4];
typedef int int_array[4];
int_arry *ip = ia;
bubuko.com,布布扣

 

 

typedef 与指针、多维数组,布布扣,bubuko.com

typedef 与指针、多维数组

标签:style   blog   class   code   java   color   

原文地址:http://www.cnblogs.com/bettercoder/p/3714103.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!