用typedef定义类型

今天看书注意到typedef还有下面的用法

        1.    typedef ing NUM[100];(声明NUM为整形数组类型)
               NUM n;                           (定义n为整形数组变量, 包含100个元素)
        2.    typedef char * STRING;   (声明STRING为字符指针类型)
               STRING p, s[10];               (p为字符指针变量, s为指针数组)
        3.    typedef int (* POINTER)();   (声明POINTER为指向函数的指针类型,该函数返回整形值)
               POINTER p1, p2;                    (p1, p2为POINTER类型的指针变量) 
在C/C++中,`typedef`可以用于定义函数类型,从而提高代码的可读性和可维护性。通过`typedef`定义函数类型后,可以简化函数指针的声明,使得代码更加简洁和清晰。 ### 定义函数类型 使用`typedef`定义函数类型的基本语法如下: ```c typedef 返回类型 (*类型名)(参数类型列表); ``` 例如,定义一个返回类型为`char`,参数类型为`int`的函数类型: ```c typedef char (*MyFunctionType)(int); ``` 通过上述定义,`MyFunctionType`成为一种新的类型名,表示指向具有特定返回类型和参数类型的函数的指针类型。 ### 使用定义的函数类型声明函数指针变量 定义了函数类型之后,可以使用该类型名来声明函数指针变量: ```c MyFunctionType pFun; ``` 上述代码声明了一个名为`pFun`的函数指针变量,它指向的函数返回类型为`char`,并且接受一个`int`类型的参数。 ### 将函数指针指向具体的函数 假设有一个函数`char glFun(int a)`,可以将`pFun`指向这个函数: ```c pFun = glFun; ``` 然后可以通过函数指针调用该函数: ```c (*pFun)(2); ``` ### 示例代码 以下是一个完整的示例代码,演示了如何使用`typedef`定义函数类型并使用该类型声明函数指针变量: ```c #include <stdio.h> // 定义函数类型 typedef char (*MyFunctionType)(int); // 函数声明 char glFun(int a); int main() { // 使用定义的函数类型声明函数指针变量 MyFunctionType pFun; // 将函数指针指向具体的函数 pFun = glFun; // 通过函数指针调用函数 char result = (*pFun)(2); printf("Result: %c\n", result); return 0; } // 函数定义 char glFun(int a) { return (char)(a + '0'); // 将整数转换为对应的字符 } ``` ### 注意事项 - 在C++中,`typedef`的行为与C语言中略有不同。C++标准允许在类作用域中使用`typedef`,而C语言不允许[^2]。 - `typedef`不能在函数内部使用来定义类型别名。如果尝试在函数体内使用`typedef`,会导致编译错误[^2]。 ### 相关问题 1. `typedef`在C++中的作用域限制是什么? 2. 如何使用`typedef`定义多个参数的函数类型? 3. `typedef`与`#define`在定义类型别名时有何不同? 4. 如何在结构体中使用`typedef`定义函数类型? 5. 使用`typedef`定义的函数类型能否用于函数模板?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值