C语言跪求高手前来解答.有点小难度.拜托了

来源:百度知道 编辑:UC知道 时间:2024/05/13 12:10:15
下面程序的输出结果是
#include<stdio.h>
funa(int x,int y)
{ return (x+y); }
funb(int x,int y)
{ return (x-y); }
func(int x,int y)
{ return (x*y); }
fund(int x,int y)
{ return (x/y); }
funct_call(int(*f_p)(),int x,int y)
{ return((*f_p) (x,y) ); }
main()
{ int j;
int funa(),funb(),func(),fund();
int(*funct[4])()={ funa,funb,func,fund};
for(j=0;j<4;j++)
printf(“%d\n”, funct_call(funct[j],8,3));
}
拜托高手能分析下这个程序啊。 .我是完全看不懂了呀 ,麻烦您了
.顺便问一下 这属于哪部分内容.好迷糊.
拜托能详细分析分析啊....谢谢;了写个步骤

int(*funct[4])()={ funa,funb,func,fund};
这句定义了一个有4 个元素的函数指针数组
所谓函数指针也只是一个指针,你不用想的太麻烦,他就是指向一个函数的入口地址,和指向一个变量的地址是一样的
printf(“%d\n”, funct_call(funct[j],8,3));
循环调用函数,当j = 0 时,可以把他看做一个普通数组,就会去调用(*funct[0])(),也就是
funa,且传入的参数是8,3进行加法运算
funct_call(int(*f_p)(),int x,int y)
{ return((*f_p) (x,y) ); }
这是是一个函数的嵌套调用,因为大家都是全局的函数,是可以互相调用的
这些东西应该是函数那一章的,具体的话就是函数嵌套和函数指针 这些多看下多写下应该就会慢慢明白了的,这个东西不要急,慢慢来自然就懂了

函数数组

#include<stdio.h>
funa(int x,int y)
{ return (x+y); }
funb(int x,int y)
{ return (x-y); }
func(int x,int y)
{ return (x*y); }
fund(int x,int y)
{ return (x/y); }
funct_call(int(*f_p)(),int x,int y) //声明一个对函数数组调用的函数,形参包括函数数组中的一个元素,与该函数要用到的实参
{ return((*f_p) (x,y) ); }
main()
{ int j;
int funa(),funb(),func(),fund(); //声明调用这四个函数
int(*funct[4])()={ funa,funb,func,fund}; //将这四个函数初始化为这个函数数组的四个元素
for(j=0;j<4;j++)
printf(“%d\