fanzhihao 发表于 2016-5-9 16:44:22

简单问题求解

typedef struct{
        int id;
        char name;
} STU,*STU;



struct STUDENT{
        int id;
        char name;
} STU,*STU;

有什么区别啊typedef 这个东西不太懂哦!求教

Irony 发表于 2016-5-9 17:18:38

typedef struct{
      int id;
      char name;
} STU;
是定义了一种名为STU的类型,以后就可以像
STU stu1;
STU stu2;
这样声明定义一个变量,和
int a;
类似。
而后者只是定义了一个这种结构的结构体,每次都要像
struct STUDENT{
      int id;
      char name;
}stu1;
struct STUDENT{
      int id;
      char name;
}stu2, stu3;
这样来声明定义一个这样结构的结构体变量。
另外你定义的指针类型重名了,要换一个
typedef struct{
      int id;
      char name;
} STU, *pSTU;
pSTU stu; 等价于 STU* stu; 使用如下
STU stu;
pSTU pstu;
stu.id = 123;
pstu->id = 1234;

Irony 发表于 2016-5-9 17:23:54

不好意思,错了个地方。
struct STUDENT{
      int id;
      char name;
}stu1;
这个之后只用
struct STUDENT stu2, stu3;
即可,不需要重复定义结构了

fanzhihao 发表于 2016-5-9 17:32:49

Irony 发表于 2016-5-9 17:23
不好意思,错了个地方。

这个之后只用


懂了额,谢谢大兄弟

人造人 发表于 2016-5-10 21:48:48

真的懂了吗?
看看这个
http://blog.csdn.net/wangweixaut061/article/details/6549768
如果你有时间,建议看完整篇,我就是看完这篇才明白了的。
如果时间不是很充足,那就看看 关于typedef 的那部分

陌雨 发表于 2016-5-10 22:34:12

typedef 只是一个关键字就像c语言里面的 intfor double return 等等,它的作就是专门用来给类型取别名的;
typedef student s1{
......
} Student
这里的Student就是 student s1 这个类型的别名,如果没有加typedef 大括号后面就不能加 Student
页: [1]
查看完整版本: 简单问题求解