怎么理解函数指针作为函数参数

C++语言 码拜 9年前 (2015-11-02) 947次浏览
下面C函数,输出的结果是
f2:f2:f2:2
f1只是用f2作为参数而已,实际上是调用f1,f2应该不会调用,
但是这里很奇怪,调用了f2函数
本人试了一下,把f1里面的while(f(n)) n++  删掉
就不调用f2了,
这种情况应该怎么理解?

#include <stdio.h>
int f1(int (*f)(int));
int f2(int);
int main(){
	printf("%d\n",f1(f2));
	return 0;
}
int f1(int (*f)(int)){
	int n = 0;
	while(f(n)) n++;
	return n;

}
int f2(int n){
	printf("f2:");
	return n*n-4;
}
解决方案:20分
while(  f(n) ) , 先调用函数 f, 然后对 f 的返回值进行判断。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明怎么理解函数指针作为函数参数
喜欢 (0)
[1034331897@qq.com]
分享 (0)