《随笔一》——C++中的指针函数和函数指针

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34536551/article/details/83341321

指针函数


● 当一个函数的返回值是指针类型时, 这个函数就是指针函数。 指针函数用于返回一个指针。

通常非指针型函数调用结束后,可以返回一个结果值, 但是每次调用只能返回一个数据。 但有时需要从被调函数中返回一批数据到主调函数中, 这时可以通过指针函数来解决。

指针函数在调用后返回一个指针, 通过指针中存储的地址值主调函数就能访问改地址中存放的数据, 并通过指针算术运算访问这个地址的前、后内存中的值。   

通过如数组、字符串、等前后顺序存放多个变量的数据类型,指针函数就可以返回一组数据。

● 语法为:

数据类型 *标识符(参数表) *标识符表示声明一个一个指针函数
int *fun(int a,int b);

在具体的程序中,指针函数的优势在于能够返回一组数据, 因此指针函数多用于数组和字符串的处理还有容器。


函数指针


●  函数指针就是指向函数的指针, 这个指针是指向函数的, 即指针存储的是函数的首地址。

语法为:

数据类型 (*函数指针名)(参数表)
int (*p) (int a,int b);

在定义指向函数的指针变量后,在使用此函数指针前, 必须先给它赋值, 使它指向一个函数的入口地址。 由于函数名是函数在内存中的首地址, 因此可以将函数名赋给函数指针变量, 赋值的语法一般为:

函数指针名 = 函数名 ;

注意: 其中,函数名所代表的函数必须是一个已经定义过的且和函数指针具有相同返回类型的函数,并且等号后面只需要写函数名而不要写参数, 下面错误:

函数指针名 = 函数名() ;

当函数指针指向某函数以后, 可以用下列形式调用函数:

 (*指针变量)(实参列表);

● 指针的运算在这里是无意义的,因为指针指向函数的首地址。 当用指针调用函数时, 程序是从指针所指向的位置开始按程序执行,若进行指针运算, 程序的执行就不是从函数的开始位置执行, 这样就会错误。

int max(int x, int y)
{
	return (x > y ? x : y);
}

int main()
{
	int(*p)(int, int);
	p = max; 初始化函数指针

	cout << "请输入两个数字:";
	int a, b;
	cin >> a >> b;

	int c = (*p)(a, b); 通过函数指针调用函数
	cout << "两个数的最大值是:" << c << endl;

	system("pause");
	return 0;
}

注意: 函数 Max 的参数 为两个整型参数, 而在 main() 函数中定义函数指针 p 时, 其必须包含两个整型参数,它们的参数表的类型要匹配,否则错误。

猜你喜欢

转载自blog.csdn.net/qq_34536551/article/details/83341321