C语言基础—函数指针与指针函数

函数指针

定义

函数指针本质上是指针,它是函数的指针(定义了一个指针变量,变量中存储了函数的地址)。函数都有一个入口地址,所谓指向函数的指针,就是指向函数的入口地址。这里函数名就代表入口地址。

函数的指针存在的意义:

  • 让函数多了一种调用方式

  • 函数指针可以作为形参,可以形式调用(回调函数)

语法:

返回值类型 (*变量名)(形参列表)

举例:

int (*p)(int a, int b);

函数指针的初始化

        ①定义的同时赋值

        ②先定义,后赋值

注意:
1.函数指针指向的函数要和函数指针定义的返回值类型,形参列表对应,否则编译报错

2.函数指针是指针,但不能指针运算,如p++等,没有实际意义

3.函数指针作为形参,可以形成回调

4.函数指针作为形参,函数调用时的实参只能是与之对应的函数名,不能带小括号()

5.函数指针的形参列表中的变量名可以省略

指针函数

定义

本质上是函数,这个函数的返回值类型是指针,这个函数称之为指针函数。

语法:

返回值类型 *变量名 (形参列表)
{
	函数体;
    return 指针变量;
}

举例:

int *get(int a)
{
	int *b = &a;
	return b;
}

int main()
{
	int *a = get(5);
	printf("%d\n",*a);
}

注意:

在函数中不要直接返回一个局部变量的地址,因为函数调用完毕后,局部变量会被回收,使得返回的地址就不明确,此时返回的指针就是野指针。

解决方案:

如果非要访问,可以给这个局部变量添加static可以延长它的生命周期,从而避免野指针(尽量少用,因为内存泄漏)

最后复习一下二维数组访问方式

C语言基础—函数指针与指针函数_第1张图片

你可能感兴趣的:(c语言,开发语言,学习,初学者)