嵌入式C开发基础题(10)

来源:互联网 发布:sql语句if判断 编辑:程序博客网 时间:2024/06/04 19:05

10:考查形式参数,实际参数,指针和数组

#include <stdio.h>void f1(int *, int);void f2(int *, int);void(*p[2])( int *, int);void main(){int a;int b;p[0]= f1;p[1]= f2;a=3;b=5;p[0](&a, b);printf("%d\t%d\t" , a ,b);p[1](&a, b);printf("%d\t%d\t \n" , a ,b);}void f1( int* p , int q){int tmp;tmp=*p;*p= q;q=tmp;}void f2( int* p , int q){int tmp;tmp=*p;*p= q;q=tmp;}


这段程序的输出是:

(a)5 5 5 5(b) 3 5 3 5 (c) 5 3 5 3 (d) 3 3 3 3


解答:

很显然选a.

f1交换*pq的值,f1执行完后,*pq的值的确交换了q的改变不会影响到 b的改变, *p实际上就是

所以执行f1, a=b=5

这道题考查的知识范围很广,包括typedef自定义类型,函数指针,指针数组

void(*p[2 ]) ( int *, int);

1)定义了一个函数指针的数组p, 

2)p有两个指针元素元素是函数的指针;

3)函数指针指向的函数是一个带2个参数,返回void的函数,所带的两个参数是指向整型的指针和整型




原创粉丝点击