为什么我们应该经常在C中对结构进行类型化呢?

为什么我们应该经常在C中对结构进行类型化呢?

我见过许多由如下结构组成的程序

typedef struct {
    int i;
    char k;} elem;elem user;

为什么这么频繁地需要它?有什么具体原因或适用范围吗?


守着一只汪
浏览 376回答 3
3回答

扬帆大鱼

正如格雷格·休吉尔所言,“类型胡枝子”意味着你不必再写文章了。struct到处都是。这不仅可以节省击键,还可以使代码更简洁,因为它提供了更多的抽象。诸如此类的东西typedef struct {   int x, y;} Point;Point point_new(int x, int y){   Point a;   a.x = x;   a.y = y;   return a;}当你不需要看到到处都是“struct”关键字的时候,你就变得更干净了,它看起来更像是你的语言中真的有一种叫做“Point”的类型。在那之后typedef,我想是这样的。还请注意,虽然您的示例(和我的)省略了命名struct实际上,当您想要提供不透明类型时,实际上命名它也是有用的。例如,在标题中会有这样的代码:typedef struct Point Point;Point * point_new(int x, int y);然后提供struct实现文件中的定义:struct Point{   int x, y;};Point * point_new(int x, int y){   Point *p;   if((p = malloc(sizeof *p)) != NULL)   {     p->x = x;     p->y = y;   }   return p;}在后一种情况下,您不能按值返回Point,因为它的定义对头文件的用户是隐藏的。这是一种广泛使用的技术。GTK+例如。更新请注意,也有高度重视的C项目,在这些项目中,typedef藏起来struct被认为是个坏主意,Linux内核可能是最著名的这样的项目.见第五章Linux内核CodingStyle文档听莱纳斯生气的话。:我的观点是,问题中的“应”毕竟不是一成不变的。
打开App,查看更多内容
随时随地看视频慕课网APP