面试题-指针-函数指针与指针函数

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

返回目录:https://blog.csdn.net/chen1083376511/article/details/82723709

问题:

问:请用代码来表达你对函数指针和指针函数的区别的理解?

答+分析: 

int(*p)(int x)是函数指针,可以直接使用,它的返回值是int型

int f(int a, int b)
{
 return a + b;
}
int g(int a, int b)
{
 return a - b;
}
void main()
{
 int(*p)(int a, int b);//定义指向函数的指针,参数表必须和要指向的函数一致 
 p = f;
 cout << (*p)(200, 100) << endl;
 p = g;
 cout << (*p)(200, 100) << endl;
}

打印结果:

300 100

int* p(int x);是一个返回值为int型指针的函数的声明
不能直接用,必须先定义才能使用,它的返回值是int *型

#include<iostream>
using namespace std;
int * fun()
{
 int b = 90;
 int *a = &b;

 return a;
}
void main(){
  cout << "b地址:" << fun() << endl;
  cout << "b的值:" << *fun() << endl;
}

打印结果:
b地址:00BDFCF4
b的值:90

函数指针和函数数组的返回类型是相似的,都是返回不是指针类型,这里返回类型为int。还有,函数指针可以指向任何函数。函数数组指向包含多个元素的数组,在多维数组中,可以p++。

指针函数和指针数组的返回类型是相似的,都是返回指针类型,这里返回类型是int*。还有,指针函数只能是自己,只是返回类型为指针,指向函数里面的对象。指针数组中每个int*元素只保存一个元素的地址,如p[1]=&m[0],不管一维还是多维的数组中,不可以p++。

猜你喜欢

转载自blog.csdn.net/chen1083376511/article/details/82721494
今日推荐