ty pedef 用法小结 本人学C++也有三年了,还是对typedef 不太熟,今天终于弄清楚了,所以发表此帖,希望对不太清楚的朋友能有所帮助
首先请看看下面这两句: typedef int a[10]; typedef void (*p)(void); 如果你能一眼就看出它们的意思,那请不要再往下看了
如果你不太理解,或概念还有些模糊,请继续往下看吧
下面的东西我就直接把人家的东西粘上去吧
自己敲太慢了
原文(摘录): typedef 用来声明一个别名,typedef 后面的语法,是一个声明
本来笔者以为这里不会产生什么误解的,但结果却出乎意料,产生误解的人不在少数
罪魁祸首又是那些害人的教材
在这些教材中介绍 typedef 的时候通常会写出如下形式: typedef int PARA; 这种形式跟#define int PARA 几乎一样,如前面几章所述,这些教材的宗旨是由浅入深,但实际做出来的行为却是以偏盖全
的确,这种形式在所有形式中是最简单的,但却没有对 typedef 进一步解释,使得不少人用#define 的思维来看待 typedef,把 int 与 PARA 分开来看,int 是一部分,PARA 是另一部分,但实际上根本就不是这么一回事
int 与 PARA 是一个整体
就象int i:声明一样是一个整体声明,只不过 int i 定义了一个变量,而 typedef 定义了一个别名
这些人由于持有这种错误的观念,就会无法理解如下一些声明: typedef int a[10]; typedef void (*p)(void); 他们会以为 a[10]是int 的别名,(*p)(void)是void 的别名,但这样的别名看起来又似乎不是合法的名字,于是陷入困惑之中
实际上,上面的语句把a 声明为具有10 个 int 元素的数组的类型别名,p 是一种函数