typedef struct student 和 struct student 的区别

2014-11-24 02:36:24 · 作者: · 浏览: 0
typedef struct student
{
int num;
struct student *next;
}student;


struct student
{
int num;
struct student *next;
};


第二个struct student是定义了一个student结构体,

第一个是用typedef 把 struct student 这个结构体类型名字重新定义为student,也就是说struct student和student表示同一个事物,都是一个类型的标识符,

比如 typedef int zhengshu; 就是你把整型int重命名为zhengshu,下面定义:int i; 和 zhengshu i; 两句就是等价的了

例程:

#define ListSize 10

typedef int DataType;

typedef struct{

DataType data【ListSize】;

int length;

}SeqList;

SeqList *L;

L->data =

L->length =


下面两个例程则是他们应用上的区别:

例1:不使用typedef,

//#include
#include
#include //exit
#include
#include

struct pfilename{
char fn[20];
int fn_len;
char *pfn;
int pfn_len;
};

int
main(int argc, char **argv)
{
struct pfilename *pFhead;

pFhead = malloc(sizeof(struct pfilename));
strcpy(pFhead->fn,"iloveyou!");
pFhead->fn_len = strlen(pFhead->fn);
printf("pFhead->fn = %s,length = %d\n",(pFhead->fn),pFhead->fn_len);

//strcpy(pFhead->pfn,"iloveyou!");
pFhead->pfn = "iloveyou!!";
pFhead->pfn_len = strlen(pFhead->pfn);
printf("pFhead->pfn = %s,length = %d\n",(pFhead->pfn),pFhead->pfn_len);

return 0;
}

例2:使用typedef
#include
#include //exit
#include
#include

typedef struct pfilename{
char fn[20];
int fn_len;
char *pfn;
int pfn_len;
}pfilename;



int
main(int argc, char **argv)
{
pfilename *pFhead;

pFhead = malloc(sizeof(pfilename));
strcpy(pFhead->fn,"iloveyou!");
pFhead->fn_len = strlen(pFhead->fn);
printf("pFhead->fn = %s,length = %d\n",(pFhead->fn),pFhead->fn_len);

//strcpy(pFhead->pfn,"iloveyou!");
pFhead->pfn = "iloveyou!!";
pFhead->pfn_len = strlen(pFhead->pfn);
printf("pFhead->pfn = %s,length = %d\n",(pFhead->pfn),pFhead->pfn_len);

return 0;
}