使用typedef定义结构体

wopabe 2011-10-18 08:27:12
各位大侠
我在大程序里看到,在定义结构体时都使用typedef,比如

typedef struct student
{
int num;
char sex;
}*STUDENT;

我不明白为什么还要多加一个typedef,这样做有什么好处呢?
...全文
789 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Solomon1588 2014-04-18
  • 打赏
  • 举报
回复
引用 4 楼 lazy_2010 的回复:
假如不使用 typedef,比如使用作为参数的时候,就该这样用 int function(struct student *p); 假如使用了 typedef,就可以这样用 int function(STUDENT *p);
小错误:STUDENT 是struct student 类型的指针,故等价的函数声明应该为 int function(STUDENT p);
zjk2752 2013-12-23
  • 打赏
  • 举报
回复
那我要写成:
typedef struct
        {
          int i;
        }TEST ;
呢? 这时候再作参数的时候,也必须加上struct ,即 int function(struct TEST *p);否则会有警告的
AndyZhang 2011-10-18
  • 打赏
  • 举报
回复
就是宏定义,只不过是定义变量的类型。
如果不用typedef那么每次申请空间,定义结构变量,前面必须加上struct,不能直接用结构名进行定义。当然这在C++编译器里面是没问题的,但是在gcc中不加struct肯定会报错,如果加上typedef就都ok了
luciferisnotsatan 2011-10-18
  • 打赏
  • 举报
回复
C里面 struct Test 这才是一个结构体的名字,声明一个对象时,struct是不能漏的。所以用typedef成Test,这样可以少敲几下键盘。
孤独小剑 2011-10-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 chenbin5587 的回复:]

使用 typedef 可以使代码更具有美观性和可读性
[/Quote]美观?不觉得;可读性?有时候会增加,但不认为这是它的主要价值……
主要用来对类型重新定义以在有时候增加程序的可移植性。
七擒关羽 2011-10-18
  • 打赏
  • 举报
回复
宏的概念,用别名代替原来的操作,让代码简洁清楚
txzsp 2011-10-18
  • 打赏
  • 举报
回复
定义一个别名,以后就不用在声明时用:struct student来定义了。
自信男孩 2011-10-18
  • 打赏
  • 举报
回复
typedef是用来声明自定义数据类型,配合各种原有数据类型来达到简化编程的目的的类型定义关键字。typedef 声明有助于创建平台无关类型,甚至能隐藏复杂和难以理解的语法。
typedef 就像 auto,extern,mutable,static,和 register 一样,是一个存储类关键字。这并不是说 typedef 会真正影响对象的存储特性;它只是说在语句构成上,typedef 声明看起来象 static,extern 等类型的变量声明。
lazy_2010 2011-10-18
  • 打赏
  • 举报
回复
假如不使用 typedef,比如使用作为参数的时候,就该这样用
int function(struct student *p);

假如使用了 typedef,就可以这样用
int function(STUDENT *p);
贪食蛇男 2011-10-18
  • 打赏
  • 举报
回复

struct Test
{
int i;
};

int main()
{
Test t;
}

上面这段代码,你可以试试,用 g++ 可以通过,用gcc通不过编译。
用 gcc 时候要写成

int main()
{
struct Test t;
}


但用了 typedef 后,

typedef struct Test
{
int i;
} TEST;

int main()
{
TEST t;
}

上面这段代码用C语法和C++语法都能通过。

其次,typedef 时经常把该结构的指针类型也一块指定了,也比较方便点。
chenbin5587 2011-10-18
  • 打赏
  • 举报
回复
使用 typedef 可以使代码更具有美观性和可读性
快雪时晴 2011-10-18
  • 打赏
  • 举报
回复
为该结构体类型定义一个别名,创建结构体变量或指针时可以起到简化的效果。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧