请帮我解释下这几道C语言选择题?
11.2 若有以下说明和定义:
#include<stdio.h>
main()
{ int(*a)(int*),*b(a),w[10],c
.
.
.
}
int fun(int *c){...}
则以下选项中能正确调用fun函数的是:
A a=fun;a(w); B a=fun;(*a)(&c); C b=fun;*b(w); D fun(b);
答案:B
不懂
11.4 有以下程序:
#include<stdio.h>
long fib(int n)
{ if(n>2) return(fib(n-1)+fib(n-2));
else return(2);
}
main()
{ printf("%ld\n",fib(6));
}
程序的输出结果是:
A 8 B 30 C 16 D 2
答案:C 此函数中如何递归?
11.9 以下程序的输出结果是:
#include<stdio.h>
funa(int a,int b) {return a+b;}
funb(int a,int b) {return a-b;}
sub(int(*t)(),int x,int y) {return(*t)(x,y);}
main()
{ int x,(*p)(int,int);
p=funa;
x=sub(p,9,3);x+=sub(funb,8,3);
printf("%d\n",x);
}
答案:17 里面的函数如何递归?
第一题:
a是一个函数指针。a=fun,a指唤中向了fun,*a具有和fun一样的功能。fun本身丛察的参数是一个int型指针,&c取c的地址,相当于一个指向c指针!(*a)(&c)是对的!
第二题:
类似菲波纳耶数列,2,2,4,6,10,16~~~~~~~~。n〉2时,每个数是前两项之和,第一项和第二项都是2!
第三题:
int x,(*p)(int,int);//p是函数指针,
p=funa;//p指向funa
x=sub(p,9,3);//p现在和funa功能相同,根据sub的功能定义,调用p指向的函数处理9和3,结果为12
x+=sub(funb,8,3);//直接用的funb,调用funb,处理8-3,结果是5
printf("%d\n",x);//x为17
这个没使用递归!!!!!!!和郑山!!!!!!!!!!!!
第1题:
a是一个函数指针。a=fun,a指向了fun,*a具有和fun一样的功能。fun本身的参数是一个int型指针,&c取c的地址,相当于一个指向c指针敏灶!(伍拿租*a)(&c)是对的!
第2题:
类似菲波纳耶数列,2,2,4,6,10,16~~~~~~~~。n〉2时,每个数是前两项之和,第一项和第二项都是2!
第3题:
int x,(*p)(int,int);//p是函数腔兆指针,
p=funa;//p指向funa
x=sub(p,9,3);//p现在和funa功能相同,根据sub的功能定义,调用p指向的函数处理9和3,结果为12
x+=sub(funb,8,3);//直接用的funb,调用funb,处理8-3,结果是5
printf("%d\n",x);//x为17
找一本好点的C语言书看看吧,一两次薯禅兄是很难彻底明白指针的,多看,多练就自然运用自如了,怕,永远学不会哦。大多数袭皮C语言学习者数袭都是这么过来的。
zfy500说的非常正确。
(*a)(&c) 看见指针就头疼。。。。。。。