永发信息网

char fun(char*); main(){ char*s="one",a[5]={0},{*f1)()=fun,ch; 调用 A(*f1)(a)B*f1(*s)Cfun(&a

答案:1  悬赏:0  手机版
解决时间 2021-03-04 23:07
  • 提问者网友:疯子也有疯子的情调
  • 2021-03-04 02:32
char fun(char*); main(){ char*s="one",a[5]={0},{*f1)()=fun,ch; 调用 A(*f1)(a)B*f1(*s)Cfun(&a)哪个对
最佳答案
  • 五星知识达人网友:夜风逐马
  • 2021-03-04 03:17
ch;是不是你在别的地方复制的或者是你在抄这道题目时搞错了。我大概了解你这到题目的意思。这道题目应该是想通过函数指针调用函数fun。首先函数指针的定义就出错了。你题目里面的f1应该就是一个函数指针,但是它的定义应该这样char (*f1)(char *)=fun;
我首先来解释一下为什么这样定义吧。指针存放的是地址,那么函数指针也不例外了。而且你定义函数指针的时候要与你要调用的函数的形式一样,注意到没有上面我定义的时候返回值和形参的类型都相同。
定义好了函数指针那么现在就来帮它赋值,我们赋给函数指针的值要是地址,而函数名存放的就是函数在内存中的起始地址。所以我们只需要把函数名赋给函数指针就行了。
既然值都赋好了,我们下一步就应该调用它了。调用的时候应该这样f1(s);这里面的实参用s知道为什么吗?那是因为s也是一个字符型的指针变量和形参一样当然要这么调用了。
下面我就将程序写一遍吧
char fun(char *c);
{
...;(这是你要实现的fun函数的功能)
}
main()
{
char *s="one";
int a[5]=;(上面的程序这里都没有将数组的类型申明出来,肯定是有问题的,这里如果是char类型即(char a[5]=),那么下面的答案还有另外一种)
char (*f1)(char *)=fun;
char ch;(这个变量应该是用来接收fun函数返回的值的)
ch=f1(s);(这就是调用fun函数了,如果上面的a数组时char类型那么还有之中情况ch=f1(a))
}
如果是考察函数指针的运用我想应该就是这样的,我不知道是不是你的题目抄错了还是我理解错了。函数指针调用如果是这样的话是绝对没错的。所以最后的答案最终只有两种结果
ch=f1(s)或ch=f1(a);
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯