面试题-指针-函数指针与指针函数
返回目录: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
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++。
还没有评论,来说两句吧...