#include <iostream>
void fun(int a)
{
std::cout << a << std::endl;
}
// 使用typedef定义了一个void(*)(int)类型的函数指针ptr1
// ptr1是一个类型名,不是变量!
typedef void(*ptr1)(int);
void test1()
{
// 由上言,ptr1是一个类型名,所以要创建一个该类型的变量p
ptr1 p = &fun;
p(1);
}
// ptr2是一个void(*)(int)类型的函数指针变量
// ptr2是一个变量,不是类型名!
void(*ptr2)(int) = &fun;
void test2()
{
ptr2(2);
}
// 使用using定义了一个void(*)(int)类型的函数指针ptr3
// ptr3是一个类型名,不是变量!
// 注意typedef和using定义函数指针类型的写法
using ptr3 = void(*)(int);
void test3()
{
// 由上言,ptr3是一个类型名,所以要创建一个该类型的变量p
ptr3 p = &fun;
p(3);
}
// 使用using定义了一个void(*)(int)类型的函数指针ptr4
using ptr4 = ptr1;
// error,ptr2是变量,不是类型名!
using ptr5 = ptr2;
int main()
{
test1();
test2();
test3();
}
C++ 函数指针
于 2024-03-08 17:23:41 首次发布