C语言基础—— typedef

本文详细介绍了C语言中typedef的应用,包括为基本数据类型、结构体、枚举、指针及函数指针等创建别名的方法,并附有示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 typedef

 typedef 原有数据类型 新的数据类型;
 1、别名的基础还可以再起别名
 1、基本数据类型
 2、结构体
 3、枚举
 4、指针
 5、函数指针

 给基本数据类型起别名
void test(){
    typedef int  Integer;
    Integer num = 10;
    printf("%d\n",num);
    typedef Integer Int;
    Int n = 20;
    printf("%d\n",n);
}

/**
 *  给结构体类型起一个别名
 */
void testForStruct(){
    // 先定义结构体,然后再给结构体起一个别名
    struct Person{
        int age;
        char *name;
    };
    
    struct Person p = {10,"xiaoming"};
    typedef struct Person PersonType;
    PersonType pp = {20,"xiaoma"};
    printf("age = %d,name = %s\n",pp.age,pp.name);
    
    //定义结构体类型的同时,给它起一个别名
    typedef struct _Point{
        int x;
        int y;
    } Point;
    
    Point point = {1,1};
    //定义匿名的结构体类型的同时,起一个别名
    
    typedef struct{
        int width;
        int height;
    } Size;
    Size size = {4,6};
}

/**
 *  给枚举类型起别名
 */
void testForEnum(){
    //给枚举类型起别名
    //先定义枚举类型,然后再起一个别名
    /*
     enum Sex{
     Man,
     Woman,
     Other
     };
     
     enum Sex m = Man;
     typedef enum Sex Sex1;
     
     Sex1 s = Woman;
     printf("%d\n",s);
     */
    //  定义枚举类型的同时给它起一个别名
    
    //    typedef enum _Sex{
    //        Man,
    //        Woman,
    //        Other
    //    } Sex;
    //
    //    Sex m = Other;
    
    //  定义匿名枚举类的同时,给它起一个别名
    typedef enum {
        Man,
        Woman,
        Other
    } Sex;
    
    Sex m = Man;
    
}

//给函数指针类型其别名
int sum(int num1,int num2){
    return  num1 + num2;
}
typedef int (*MethodPointer)(int,int);
int main(int argc, const char * argv[]){
    
    MethodPointer minu = minus;
    int result  =  minu(20,10);
    printf("result = %d\n",result);
    return 0;
}

static与extern对函数作用

/*
  外部函数:可以在本文件和其他文件中访问的函数我们成为外部函数
  内部函数:只能在本文件中被访问的函数
 
  extern:
      完整定义一个外部函数
      完整声明一个外部函数
  static:
      定义一个内部函数
      声明一个内部函数
  1、内部函数在不同文件中是可以有同名的
  2、外部函数在不同文件中不可以有重名的函数定义
 */

 static与extern对全局变量的作用

 /*
   全局变量:
   外部变量:可以在本文件中和其他文件中访问变量
   内部变量:只能在本文件中被访问变量
 
    extern:完整的定义一个外部变量
           完整的声明一个外部变量
    static:定义一个内部变量
           声明一个内部变量
 
    注意点:使用extren声明变量,那么系统不会自动为我们定义一个同名同类型变量
 */

 satic 与 extern对局部变量作用

   1、不可以在局部变量定义并初始化时候加extern
   2、extern用在函数内部是对全局变量声明
 
   3、static延长了局部变量的声明周期,但是并没改变它作用域
   4、不管定义并初始化的语句被调用多少,它都只执行一次
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值