《C语言笔记:typedef关键字的用法》

一,typedef关键字

  1,C语言中的类型一共有两种:一种是编译器定义的原生类型(基础数据类型,比如int char float double);第二种是用户自定义的类型,不是语言自带的而是程序员自己定义的(比如数组指针、指针数组、函数指针、结构体类型、函数类型等)。

  2,有时候自定义类型太长了,用起来不方便,所有用typedef给它重命名一个短点的名字。

  3,需要注意的是,typedef是给类型重命名,也就是typedef加工出来的是数据类型,而不是变量(不会分配内存)。类型是一个数据模板,变量是一个实在的数据。类型是不占内存的,而变量是要占内存的。

二,typedef与#define的区别

  typedef char * TYPcahr;

  #define DEPchar  char * 

#include<stdio.h>

typedef char * TYchar;
#define DEchar  char *

int main(void)
{
    TYchar p1,p2;   //相当于 char *p1;char *p2

    DEchar p3,p4;   //相当于 char *p3,p4;    char *p3;char p4

    char c = 0;

    p1 = &c;
    p2 = &c;

    p3 = &c;
    p4 = &c;     //类型不匹配
    p4 = c;
    
}

三,typedef和结构体

  1,结构体在使用时都是先定义结构体类型,再用结构体类型去定义变量。

  2,C语言语法规定,结构体类型使用时必须是struct+结构体类型名+结构体变量名;这样的方式来定义变量。

  3,使用typedef一次定义两个类型,分别是结构体变量类型,和结构体变量指针类型。

四,tpyedef和const

  typedef int *PINT;

  1,const PINT p2;  实际的意思并不是 const int *p2,而是int *const p2;

  2,PINT const p2;相当于 int *const p2;

  3,要想定义 const int *p2; 只能typedef const int * CPINT;    CPINT  p2;

五,typedef和函数指针

  比如 char *strcpy(char *dest,const char *src)的函数指针。

  typedef char *( *Pstrcpy)(char *,const char *);

  Pstrcpy p1;   //p1是一个指向strcpy函数类型的指针

  Pstrcpy p2;  //p2是一个指向strcpy函数类型的指针

#include<stdio.h>
#include<string.h>

typedef char *(*Pstrcpy)(char *,const char *);


int main(void)
{
    char a[32] = {0};
    char b[32] = {0};
    Pstrcpy p1,p2;
    p1 = strcpy;
    p2 = strcpy;

    p1(a,"hello world");
    p2(b,"hello world");
    printf("  a = %s  \n",a);  //hello world
    printf("  b = %s  \n",b);  //hello world
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程界的小学生、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值