typedef你真的理解么?

来源:本站
导读:目前正在解读《typedef你真的理解么?》的相关信息,《typedef你真的理解么?》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《typedef你真的理解么?》的详细说明。
简介:typedef,用最简单的话去诠释他,那么就是给类型取别名!!! 但是他并没有你想象的那么简单!

举例:

typedefintsize;//那么int就有一个别名叫size了,以后就可以 size i 什么的了;

看到这里,如果你仅仅认为typedef不过如此,不就是把第一个参数(类型名),等同于第二个参数,这么简单。那你可能就会陷入困境。

比如看下面这个例子:

typedefcharLine[81];

你能说Line[81]就是char的别名吗?这显然不对。它真正的含义是:此时Line类型即代表了具有81个元素的字符数组。

那么 Line t;就等同于char t[81];看到这里你晕了没?不好理解是不是?我们尝试把它放在一起看看。

typedefcharLine[81];    //typedef行         char     t[81];   //原型行         Line     t;        //应用行

同理:

typedefintsize;   //typedef行         int     i;   //原型行         size    i;   //应用行

//另一个函数指针的例子

typedef    int    (*fun_ptr)(int,int);   //typedef行           int    (*fp)(int,int);        //原型行           fun_ptr    fp;                //应用行

这3个例子都有几个共同点:

1、“typedef行”和 “原型行”,相比形式基本相同,“typedef行”仅仅多个typedef而已。就最后一个例子来说

它们的根本区别是,fun_ptr是类的别名,fp是该类的变量(用面对对象的话,就是类的实例)。

2、“原型行”和 “应用行”他们得到的结果就是一样的。就最后一个例子来说,就是都创建了一个类型为

int (*)(int,int);的函数指针tp。

总结:

看穿了上面两个共同点,想看穿,或者是用透typedef就并非难事了。

因为只要我们能写出原型行,就能直接写出typedef行,而应用的行的理解就等同于原型行的理解!

比如 int (*fp)(int,int); 我想跟这个函数指针类型取一个别名。只要在前面加个typedef即可啊!

typedef int (*fun_ptr)(int,int);,只不过把fp换成你想要的别名fun_ptr就行了。

应用就更简单了:fun_ptr fp;

理解也简单了fun_ptr fp; 就等价于 int (*fp)(int,int);

其实,理解的关键就是把typedef后面两个参数看成一个整体,一切就豁然开朗~~

——宋桓公

提醒:《typedef你真的理解么?》最后刷新时间 2024-03-14 01:01:44,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《typedef你真的理解么?》该内容的真实性请自行鉴别。