有以下程序 int add(int a,int b) {return(a+b)} main() { int k,(*f)(),a=5,b=10; f=add; ... }
则以下函数调用语句错误的是A.k=(*f)(a,b);B.k=add(a,b);C.k=*f(a,b);D.k=f(a,b);这道题的题干是什么意思啊?为什么答案是c,...
则以下函数调用语句错误的是
A.k=(*f)(a,b); B.k=add(a,b);
C.k=*f(a,b); D.k=f(a,b);
这道题的题干是什么意思啊?为什么答案是c, 展开
A.k=(*f)(a,b); B.k=add(a,b);
C.k=*f(a,b); D.k=f(a,b);
这道题的题干是什么意思啊?为什么答案是c, 展开
展开全部
这个题是考察 函数指针的应用方式
使用函数的时候 如果是函数名的调用,编译器会自动转化成函数指针去执行函数。
所以 调用函数就有了两种方式
第一种 就是 答案A和B
这里直接调用函数名 (系统会转成函数指针)
第二种 就是答案D
直接调用函数函数指针
答案C错误是因为优先级这样就成了k = 函数返回值得指针了~ 而k是一个整形不能接受指针值~
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
补充:
int (*f)() //定义了一个指针变量f,他是指向一个返回值是整型变量的函数。叫做指向函数的指针变量。
int add(int a,int b) {return (a+b);} // 定义了一个函数add,函数有两个整型的参数。返回值类型也是整型。功能是计算两个整数相加。大括号是函数体,就像main函数后面的大括号一样。return是返回语句,是函数返回到调用它的函数。后面的(a+b)是返回的值,即两个参数的相加结果。
k=f(a,b) // 是一个赋值语句和函数调用语句。用指针形式调用函数,将结果赋给k. 前提f要指向函数add,要有f=&add;
k=(*f)(a,b) // 是一个赋值语句和函数调用语句。用指针形式调用函数,将结果赋给k.前提f要指向函数add,要有f=add;
使用函数的时候 如果是函数名的调用,编译器会自动转化成函数指针去执行函数。
所以 调用函数就有了两种方式
第一种 就是 答案A和B
这里直接调用函数名 (系统会转成函数指针)
第二种 就是答案D
直接调用函数函数指针
答案C错误是因为优先级这样就成了k = 函数返回值得指针了~ 而k是一个整形不能接受指针值~
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
补充:
int (*f)() //定义了一个指针变量f,他是指向一个返回值是整型变量的函数。叫做指向函数的指针变量。
int add(int a,int b) {return (a+b);} // 定义了一个函数add,函数有两个整型的参数。返回值类型也是整型。功能是计算两个整数相加。大括号是函数体,就像main函数后面的大括号一样。return是返回语句,是函数返回到调用它的函数。后面的(a+b)是返回的值,即两个参数的相加结果。
k=f(a,b) // 是一个赋值语句和函数调用语句。用指针形式调用函数,将结果赋给k. 前提f要指向函数add,要有f=&add;
k=(*f)(a,b) // 是一个赋值语句和函数调用语句。用指针形式调用函数,将结果赋给k.前提f要指向函数add,要有f=add;
展开全部
A、B效果一样,都是值运算,D是函数地址运算,运算结果保存在该函数的地址,C想与A做相同的运算,所以一定是在A、C里面选择,但是C语法错误
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
c在执行的时候是*(f(a,b)),题目里面根本就没有f()函数,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询