学习电脑 发表于 2016-8-12 11:29:30

typedef

typedef struct
{
        int ban;
        char name;
        int num;
        float score;   
        float zong;

}Student;

typedef structStudent
{
        int ban;
        char name;
        int num;
        float score;
        float zong;

}st;

两个分表代表什么?

patton88 发表于 2016-8-12 11:51:05

本帖最后由 patton88 于 2016-8-12 12:04 编辑

// 这个是重定义匿名结构体为Student
typedef struct
{
      int ban;
      char name;
      int num;
      float score;   
      float zong;

}Student;

// 这个是重定义命名结构体Student为st
typedef structStudent
{
      int ban;
      char name;
      int num;
      float score;
      float zong;

}st;

patton88 发表于 2016-8-12 12:02:43

本帖最后由 patton88 于 2016-8-12 12:05 编辑

/*
typedef struct StudentB
{
      int ban;
      char name;
      int num;
      float score;
      float zong;
               
}st;*/

// 匿名结构体typedef只能一次性定义。而命名结构体typedef定义可以改写为两步
struct StudentB
{
      int ban;
      char name;
      int num;
      float score;
      float zong;
               
};

typedef StudentB st;

陌雨 发表于 2016-8-12 12:17:28

typedef struct
{
      int ban;
      char name;
      int num;
      float score;   
      float zong;

}Student;/*        一个没有本名的结构体,但有一个别名 Student可以直接用 Student tmp ;这样来创建一个结构体变量        */

typedef structStudent
{
      int ban;
      char name;
      int num;
      float score;
      float zong;

}st;/*一个有本名,也有别名的结构体,可以   struct Student   tmp;   或者   sttmp; 这种两种方式来创建变量*/

樱花 发表于 2016-8-12 15:09:47

{:5_94:}

学习电脑 发表于 2016-8-13 10:27:19

陌雨 发表于 2016-8-12 12:17
typedef struct
{
      int ban;


比如第一个我用Student * p
第二个我用st * p

这两个一样么? 第一个是不是错了?

轮回的夏 发表于 2016-8-13 17:49:40

patton88 发表于 2016-8-12 11:51


刚好是我不会的问题,虽然不能给楼主解答,但是看到你们发的帖子,也学习到了,谢谢{:10_256:}

陌雨 发表于 2016-8-16 14:30:42

学习电脑 发表于 2016-8-13 10:27
比如第一个我用Student * p
第二个我用st * p



晕 没注意最后还有一句 代码’ypedef struct StudentB st;’ 但是写错了 ,应该是 typedef struct StudentB st ,要加一个 struct ;

再来回答你的问题:
第一个没错,因为它的别名是 Student你可以用这个别名定义一个指针变量;
第二个 可以用 struct Student ,也可以用 st定义指针变量
页: [1]
查看完整版本: typedef