1.区别在于第一个声明了一个名为init的函数指针变量(或函数指针类型的变量声明),第二个声明了一个类型别名init,表示一个指向特定函数签名的函数指针类型。
2.第一个语句声明了一个变量init,它是一个指向函数的指针,该函数接受(u32, u32, u8)参数,返回void。这个变量本身可以被赋值,然后通过它调用函数。
3.第二个语句定义了一个类型名init,它代表一个函数指针类型。之后可以用init来声明其他变量,例如init func_ptr;,相当于声明了一个指向相同签名的函数指针变量。
举例说明:
没有typedef:void (*init)(…); 这里init是一个变量,我们可以直接对它赋值:init = some_function;。
有typedef:typedef void (*init)(…); 这里init是一个类型,我们可以用init定义变量:init my_func_ptr;,然后my_func_ptr = some_function;。
总结:第一个是变量声明,第二个是类型声明。
![【题解】[COCI 2025/2026 #6] 滑雪 / Skijanje(李超树 0 基础友好喵)-171主机测评](https://www.171host.com/wp-content/uploads/2026/08/20260826083930-6a8ea642697bc-220x25.png)
