C++中的函数指针
在C++中,函数指针是一个指向函数的指针,可以用来调用函数。函数指针的声明方式如下:
返回类型 (*指针变量名)(参数列表);
例如,如果有一个函数:
int add(int a, int b) {return a + b;
}
可以声明一个指向这个函数的指针:
int (*pAdd)(int, int);
然后可以使用这个指针来调用函数:
pAdd = add;
int result = pAdd(2, 3); // result 现在是5
另外,也可以直接使用typedef来简化函数指针的声明:
typedef int (*MyFunctionPointer)(int, int);MyFunctionPointer pAdd2 = add;
int result2 = pAdd2(2, 3); // result2 现在是5
这样,使用MyFunctionPointer就可以声明一个指向函数的指针,使得代码更加简洁易读。
C++中的typedef使用
typedef 是 C++ 中的一个关键字,用于为数据类型定义别名。这样可以提高代码的可读性,也可以在不同的类型之间进行更容易的替换。
以下是一些 typedef 的使用示例:
给基本数据类型定义别名:
typedef int MyInt;
在这个例子中,MyInt 现在是 int 的别名。
给数组类型定义别名:
typedef int Array5[5];
在这个例子中,Array5 现在是具有 5 个 int 元素的数组的别名。
给指针类型定义别名:
typedef int* pInt;
在这个例子中,pInt 现在是 int* 的别名。
给函数指针定义别名:
typedef void (*FunctionPtr)(int);
在这个例子中,FunctionPtr 现在是指向函数的指针的别名,该函数接受一个 int 参数并返回 void。
给类定义别名:
typedef std::vector IntVector;
在这个例子中,IntVector 现在是 std::vector 的别名。
给类成员函数指针定义别名:
typedef void (MyClass::*MemberFunctionPtr)(int);
在这个例子中,MemberFunctionPtr 现在是指向 MyClass 类中的成员函数的指针的别名,该函数接受一个 int 参数并返回 void。
给模板定义别名:
template<typename T>
using MyVector = std::vector<T, MyAllocator<T>>;
在这个例子中,MyVector 现在是 std::vector 的别名,该 vector 使用了自定义的分配器 MyAllocator。
给 typedef 定义别名:
typedef MyInt AliasForMyInt;
在这个例子中,AliasForMyInt 现在是 MyInt 的别名。
以上都是 typedef 的使用示例,可以根据实际需要选择合适的类型定义别名。