typedef struct student 和 struct student 的区别

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 <apue.h>
#include <stdio.h>
#include <stdlib.h>  //exit
#include <malloc.h>
#include <string.h>

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 <stdio.h>
#include <stdlib.h>  //exit
#include <malloc.h>
#include <string.h>

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;
}


  • 12
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值