永发信息网

求助 C语言typedef的用法!请高手详细解答!!谢谢!!

答案:3  悬赏:70  手机版
解决时间 2021-01-04 13:26
求助 C语言typedef的用法!请高手详细解答!!谢谢!!
最佳答案
举几个例子吧。

typedef int p; //将p定义为int类型,定义"p i;" = “int i;”
typedef int p[10]; //将p定义为int[10]类型,定义"p i;" = “int i[10];”
typedef int* p; //将p定义为int类型,定义"p i;" = “int *i;”
typedef struct stu p; //将p定义为结构体stu类型,定义"p i;" = “struct stu i;”
typedef int p(int , int); //将p定义为int __(int ,int)类型的函数,定义"p i;" = “int i(int, int);”
全部回答
typedef用法小结 在C语言的情况下,与C++稍有出入。 这两天在看程序的时候,发现很多地方都用到typedef,在结构体定义,还有一些数组等地方都大量的用到.但是有些地方还不是很清楚,今天下午,就想好好研究一下.上网搜了一下,有不少资料.归纳一下: 来源一:Using typedef to Curb Miscreant Code Typedef 声明有助于创建平台无关类型,甚至能隐藏复杂和难以理解的语法。不管怎样,使用 typedef 能为代码带来意想不到的好处,通过本文你可以学习用 typedef 避免缺欠,从而使代码更健壮。 typedef 声明,简称 typedef,为现有类型创建一个新的名字。比如人们常常使用 typedef 来编写更美观和可读的代码。所谓美观,意指 typedef 能隐藏笨拙的语法构造以及平台相关的数据类型,从而增强可移植性和以及未来的可维护性。本文下面将竭尽全力来揭示 typedef 强大功能以及如何避免一些常见的陷阱。 如何创建平台无关的数据类型,隐藏笨拙且难以理解的语法? 使用 typedef 为现有类型创建同义字。 定义易于记忆的类型名 typedef 使用最多的地方是创建易于记忆的类型名,用它来归档程序员的意图。类型出现在所声明的变量名字中,位于 ''typedef'' 关键字右边。例如: typedef int size; 此声明定义了一个 int 的同义字,名字为 size。注意 typedef 并不创建新的类型。它仅仅为现有类型添加一个同义字。你可以在任何需要 int 的上下文中使用 size: void measure(size * psz); size array[4]; size len = file.getlength(); std::vector vs; typedef 还可以掩饰符合类型,如指针和数组。例如,你不用象下面这样重复定义有 81 个字符元素的数组: char line[81]; char text[81]; 定义一个 typedef,每当要用到相同类型和大小的数组时,可以这样: typedef char Line[81]; Line text, secondline; getline(text); 同样,可以象下面这样隐藏指针语法: typedef char * pstr; int mystrcmp(pstr, pstr); 这里将带我们到达第一个 typedef 陷阱。标准函数 strcmp()有两个‘const char *'类型的参数。因此,它可能会误导人们象下面这样声明 mystrcmp(): int mystrcmp(const pstr, const pstr); 这是错误的,按照顺序,‘const pstr'被解释为‘char * const'(一个指向 char 的常量指针),而不是‘const char *'(指向常量 char 的指针)。这个问题很容易解决: typedef const char * cpstr; int mystrcmp(cpstr, cpstr); // 现在是正确的 记住:不管什么时候,只要为指针声明 typedef,那么都要在最终的 typedef 名称中加一个 const,以使得该指针本身是常量,而不是对象。 链表中的大概应用 name 保存在结构体单元的name[20] 数组里; typedef struct node { char name[20]; struct node *link; }stud; 这是前面定义的结构体变量,一个单元包含两个部分,一个用来存储name的数组name[20],一个用来存放下一个单元地址的指向结构体node的指针。假设该单元的地址是p,那么p->name 表示第一部分name[20]的地址,p->link表示第二部分,作用是存放下一个单元的地址。
首先你得明白变量定义,比如像 int n; 这样的“类型 变量;”样子,或者像 int (*fun)(); 这样的函数指针定义 所有这些变量定义,在前边加上typedef就使得本来是变量的东西变成了一种类型,举个例子 小汽车 a1;//我们定义了a1是一个小汽车实体,看得见摸得着 typedef 小汽车 a2;//a2是一个概念,看不见摸不着,代表了小汽车一类,也就是上面的a1所属类型,你可以用它来定义其他实体的类型,使得其他实体有和a1一样的属性 也许这样并看不出好处在哪,试想当你需要明确一些类型的组合或者类型描述起来很复杂,就很有用了,比如下面的定义 德国产的黑色的敞篷的2010年出产的跑车 a3; 是不是每次都这么说起来很麻烦?选择typedef可以更方便。 另外如果你不用typedef却又定义了很多这样的变量,当你想更新这个类型,比如改为2020年出产的,就必须一个一个更改,是不是更崩溃。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
付承兑10万贴现手续费我方、对方双方承担怎么
迷彩服裤子搭配什么款式和颜色的鞋子合适?
2008年5月12日14时28分,四川汶川发生8.0级特
据英国报道,2月4日,英国航空航天部在对包括
Our teacher is always busy preparing lesso
电脑播放器播放不了出现绿底
怎么样才可以让自己变的更坚强
单赛季获得三个MVP和得分王加双一阵球员有多
手臂粗怎么减得快呀
手机店名大全
第II卷(非选择题。共55分) 第三部分写作(共三
十月份适合结婚的日子
富士施乐m158b加粉可以使用普通墨粉吗?还是要
lg22+lg2lg5+lg5=________.
怎么检测硝化细菌培养好了
推荐资讯
暴烈的近义词是什么
顺产生的宝宝后小肚子疼怎么回事
食盐是日常生活的必需品,也是重要的化工原料
Excuse me. Could you tell me ?---Sorry. I
(二)阅读答案
如果整式M是一个2次多项式,整式N是一个3次多
微信电脑版本哪个可以发红包和收红包
平乐县环境保护局地址在哪?我要去那里办事
国地管户类型是什么
Don’t you want to go to school? You could
梁化供电所(梁化营业厅)位置在什么地方啊,我
正常女人不喜欢阴天,为什么有的女人喜欢阴天
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?