关于C语言结构体自定义类型

type struct
{
int a;
float b;
struct *p;

} STUDENT;

typedef struct stu
{
int a;
float b;
struct std *p;
} STDUENT;
那位高手能给我讲解一下这两个的不同之处,非常感谢!!!
不好意思你们两个说的都不对,这个自定义绝对是正确的,但是我不知道区别在哪里?

  首先,定义一个结构的一般形式为:


  struct结构名

  {

  //成员表列

  };

  成员表由若干个成员组成, 每个成员都是该结构的一个组成部分。对每个成员也必须作类型说明,其形式为:“类型说明符 成员名;”。成员名的命名应符合标识符的书写规定。例如:


  struct stu

  {

  int num;

  char name[20];

  char sex;

  float score;

  };

  在这个结构定义中,结构名为stu,该结构由4个成员组成。 第一个成员为num,整型变量;第二个成员为name,字符型数组;第三个成员为sex,字符型变量;第四个成员为score,浮点型变量。 应注意在括号后的分号是必不可少的。


  然后,当结构定义完成后,即创建了一种数据类型,可以像int、float等内置类型一样使用,以上面定义的stu结构体来和int类型对比着看。

  int a;//定义一个int类型的变量a
  stu a; //定义一个stu类型的变量a
  int *p; //定义一个int类型的指针p
  stu *p; //定义一个stu类型的指针p
  int a[10];//定义一个int类型的数组a,它有10个元素,每个元素是int类型
  stu a[10];//定义一个stu类型的数组a,它有10个元素,每个元素是stu类型。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-11-10
用typedef可能是为了规避C和C++在定义一个结构体实例变量时的不同吧(C要struct,C++不要),我是随便说说的,可能不是这样哦
第2个回答  2007-11-11
我想第一种形式应该是:吧
struct stu
{
int a;
float b;
struct *p;

} STUDENT; (这里定义了一个stu结构体,并定义了一个该类型的结构体变量STUDENT)
在这种形式下以后还需要定义stu结构体变量是必须使用语句:
struct stu 变量名;

第二种形式:
typedef struct stu
{
int a;
float b;
struct std *p;
} STDUENT;

区别是,使用时只需要:stu 变量名;

**********************************
补充回答:
typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。

在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。

type struct //这个type是可以省略的。
{
int a;
float b;
struct *p;

} STUDENT; //这样的定义只是在结构体定义时定义了一个这样类型的STUDENT结构体。
这个结构体定义没有给出结构体类型名,所以以后也不能再向上面那样在程序的其他地方定义这样类型的结构体变量了。本回答被网友采纳
相似回答