拆开看,后半句是int (*pf)(int) = fun6;
创新互联建站专注于成都网站设计、成都网站制作、网页设计、网站制作、网站开发。公司秉持“客户至上,用心服务”的宗旨,从客户的利益和观点出发,让客户在网络营销中找到自己的驻足之地。尊重和关怀每一位客户,用严谨的态度对待客户,用专业的服务创造价值,成为客户值得信赖的朋友,为客户解除后顾之忧。
这是函数指针声明规则,具体为什么呢,是c语言中的规定了
指向有一个int参数,返回一个int值的函数
c中的*pf取出指向的函数fun6,即(*pf)相当于fun6,后面就不用说了
cout(*pf) (256); == coutfun6(256);
这其实和普通指针操作一样的
如int a=10, *p=a;
count (*p); // 取出p指向的内容,a
函数指针只不过是多一步调用操作而已,另外你可以试试coutpf (256); 也是正确的,这样pf完全是可以当成一个函数的别名的
这是个递归调用。
fun(int x)
{
if(x/20)
fun(x/2);
printf("%d ",x);
}
main()
{
fun(6);
}
仔细想想!!
你看哇,一开始的时候 X=6到IF语句中进行不下去了吧。
他就调用了FUN函数,在这个调用里,X/2=3了吧。。然后,
又停在IF语句里了吧。所以继续调用X/2=1了吧。这里再调用FUN
就不满足 IF的条件了吧。
所以它运行完X=1时候的函数输出了1
然后它把FUN(1)传给上一个FUN(3),这里就可以往下进行了。输出了3.
就这样再把FUN(3)传给FUN(6)结果输出6了。明白了吧。
你用先运行完里面调用的函数,再回到外层的啊。
fun(j,6)是什么意思
j是变量,6是参数,fun是函数名,意思是调用函数fun,并传入参数j和6。
n=26入函数;
进入循环:
k==1,num==26 - k*=(26%10) = k*=6 = k=1*6=6 , num/=10 = num=26/10=2;
k==6,num==2 -- k*=(2%10) = k*=2 = k=k*2=12,num/=10 = num=2/10=0;
num==0 循环结束。
return k= return 12;
#includestdio.h
unsigned fun6(unsigned num)
{
unsigned k = 1;
do
{
k*=num%10 ;
num/=10;//这里应该是num/=10;
}
while (num);
return k;
}
main()
{
unsigned n=26;
printf( "%d\n",fun6 ( n ) );//少个;
}
代码改过之后,输出的的确是12
fun6函数实现的是得到一个整数各个位上数的乘积
你的程序里面就是2*6=12了
至于子函数fun6是如何实现的,分析一下:
k=1存放整数num中各个位上数的乘积,初始化为1
num%10是取余,得到num的个位数,和k相乘,结果赋给k
num/=10;等价于num=num/10;把num除10取整,因为num是int型对象,除法有取整的效果,比如
本例中26/10就等于2
C/C++语言中,fun函数通常被主函数所调用。它是指用fun来定义一个函数(或方法),这样在引用时可以用fun表示。比如int fun(int x,int y),void fun(char* a,char* b) 等等。
有先前的定义,就可以在主函数里调用它,比如ans=fun(3,7);或者fun(p1,p2);
fun函数是自定义函数。fun一词没有其它意思,只是在调用时用这个单词表示该函数。 扩展资料 #include
void fun(int *p)
{printf(%d\n",p[5]);}
main()
{int a[10]={1,2,3,4,5,6,7,8,9,10};
fun(a[3]);
}
从main函数看起,定义一个数组a,fun(a[3])调用a[3]元素的地址,到fun函数中执行,fun函数总的*p指向a[3],输出p[5]就是a[3]的地址加上5,即a[8],返回主函数中的'值即为a[8]的值为9,运行结果为9
(数组元素名从a[0]到a[9]共十个元素。)