ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

【C】typedef 关键字 typedef int (*Operation)(int, int);

2026/8/5 23:18:02 拓冰建站 浏览量
【C】typedef 关键字 typedef int (*Operation)(int, int);

目录

    • typedef
      • 1)基本语法
      • 2)基本类型别名
      • 3)结构体类型别名
      • 4)枚举类型别名
      • 5)函数指针类型别名(常用)
      • 6)以FreeRTOS代码为例
      • 7)总结

typedef

typedef 是C语言中的一个关键字,它的主要作用是创建类型别名。是 type definition(类型定义)的缩写。目的是更清晰地表示数据类型,提高代码的可读性和可维护性。

1)基本语法

typedef 的基本语法如下:

typedef existing_type new_type;

这里 existing_type 是已存在的数据类型,而 new_type 则是你为这个已存在类型创建的别名。

2)基本类型别名

使用 typedef 可以为基本数据类型创建别名,使得代码更易读:

typedef int MyInteger;  // 将 int 类型创建别名为 MyInteger

这样,你就可以使用 MyInteger 代替 int

MyInteger num = 42;

3)结构体类型别名

在结构体的定义中,typedef 可以用于为结构体类型创建别名:

typedef struct {int age;char name[50];
} Person;

这里,Person 就是结构体类型的别名,你可以使用 Person 来声明结构体变量:

Person student1;

4)枚举类型别名

同样,typedef 也可以用于为枚举类型创建别名:

typedef enum {RED,GREEN,BLUE
} Color;

这里,Color 就是枚举类型的别名,你可以使用 Color 来声明枚举变量:

Color favoriteColor = BLUE;

5)函数指针类型别名(常用)

前置知识:函数指针相关知识(指向函数的指针)。

typedef 还可以用于为函数指针创建别名,提高代码的可读性:

typedef int (*Operation)(int, int);

具体解释:

  • typedef: 创建类型别名。
  • int (*Operation)(int, int): 定义一个函数指针。(函数指针:指向函数的指针)
  • 整个语句的意思是,Operation 是一个函数指针类型的别名,它可以指向返回类型为 int,接受两个 int 类型参数的函数。

你可以使用 Operation 来声明相应的函数指针变量:

typedef int (*Operation)(int, int); //给函数指针起新名字int add(int a, int b) {return a + b;
}Operation operationPtr = add; //实例一个函数指针,并赋值,让其指向某一个函数

复杂一点的例子:

typedef int (*Operation)(int, int); //给函数指针起一个别名,叫 Operationint add(int a, int b) {return a + b;
}int subtract(int a, int b) {return a - b;
}void processNumbers(int x, int y, Operation operation) {   //入口参数是一个函数指针int result = operation(x, y);printf("Result: %d\n", result);
}int main() {Operation addPtr = add;  // 声明并赋值函数指针processNumbers(4, 5, addPtr);  // 通过函数指针调用函数return 0;
}

这个例子包括了函数指针的声明、赋值、传递,以及通过函数指针调用函数等方面。

6)以FreeRTOS代码为例

typedef void (*TaskFunction_t)( void * ); // 给函数指针类型起新名字,叫TaskFunction_tBaseType_t xTaskCreate( TaskFunction_t pxTaskCode, // 用新名字定义形参,看起来会更简洁。const char * const pcName, const configSTACK_DEPTH_TYPE usStackDepth, void * const pvParameters, UBaseType_t uxPriority,   TaskHandle_t * const pxCreatedTask ); 

第一行,用 typedef 给函数指针类型起了新名字

第三行,形参1,使用了新类型名定义形参,看起来会更简洁明了。实质形参1 就是一个函数指针,使用时该位置就应该填入一个函数名,而该函数的定义应该满足void xxxx( void * ); 这样的格式,输入参数是一个void指针,返回值是void。

7)总结

通过使用 typedef,可以增强代码的可读性,使得数据类型的含义更加清晰。特别是在处理复杂的数据结构、函数指针等场景时,typedef 能够简化代码,使其更易理解。

总体来说,typedef 是一个在C语言中用于创建类型别名的强大工具,通过它,你可以提高代码的可维护性和可读性,使代码更容易理解。