int i;//定义int类型变量i; typedef int MyInit;//定义一种类型 MyInit j;//定义int类型变量j;
下面介绍一些函数指针的使用
形式一:返回类型 (*函数名) (参数表)
#include<...> char (*pFun) (int); //定义一个参数类型为int 返回值为char的函数指针pFun; //函数名即指针要指向的首地址 char test(int a) { return a; } int main() { //将函数名,即函数首地址复制给指针pFun; pFun = test; //当函数首地址给到指针后,函数的内容也给到了指针(因为长度是类型的构成要素)。 //这时候通过指针解引用来操作本体(那个指针指向的东西) (*pFun)(2); //相当于调用了test(2),其实就是调用了test(2); }
形式二:typedef 返回类型(*新类型)(参数表)
//定义一种新类型,首先该类型是函数指针类型,指向一个函数,这个被指向的函数的参数类型为int 且返回值类型为char。 typedef char (*pNew) (int); pNew pFun; //用类型来定义一个变量 类似 int i,在这里我们称pFun是pNew类型的 //然后我们让pFun指向一个和pFun般配的函数 pFun = test;//当把函数首地址和函数长度都给了pFun指针之后,pFun就可以操控指向的函数了 (*pFun)(2);//相当于给本体直接传了一个参数2;这里的*和定义pNew时的*号是不一样的,前面定义是用*是为了说明被定义的类型是指针类型,后面的*pFun是函数指针的解引用;
//*pFun 就和 test 在这儿放着一样!