Kotori 发表于 2017-8-16 22:25:56

S1E30指针函数和函数指针笔记

本帖最后由 Kotori 于 2017-8-16 22:25 编辑

指针函数和函数指针
1>指针函数
      函数的类型指的是函数返回值的类型。因此,指针函数指的是返回值的指针的函数。
        定义形式:函数类型 *函数名 (参数列表)
char *pstr(int num)
{
        if (num%2==0)
        {
                return "AAAAA";
        }
        else
        {
                return "BBBBB";
        }
}
        上面的函数返回一个字符的指针,但需要注意是:不要返回局部变量的指针。因为函数结束后,内存会释放,该局部变量的地址就会失去意义。而上方代码中的是字符串常量,在编译后,这些内容并不存在于函数中,所以能正常返回地址。
2>函数指针
        函数指针是指向函数的指针。可以通过指针加参数调用函数。
        定义形式:函数类型 (*函数指针名)(参数列表)
        注意:参数列表指的是指向的函数的参数列表。
3>函数指针作为参数
        函数指针可作为参数传递给另一个函数,通过传入的函数名来确定调用的函数。
int mul(int a, int b);
int divi(int a, int b);
int calc(int (*fp)(int, int), int a, int b)
{
        return (*fp)(a, b);
}

calc(mul, a, b);        //调用mul函数
calc(divi, a, b);        //调用divi函数
4>函数指针作为返回值
        函数指针作为一类指针,也可以作为函数的返回值。
int (*fp(char, char))(int a, int b);
        函数fp接收两个char作为参数,返回一个'返回值是int,有两个int为参数的函数'的指针。在实际中少用这类写法,不容易理解。
页: [1]
查看完整版本: S1E30指针函数和函数指针笔记