有以下程序 int add(int a,int b) {return(a+b)} main() { int k,(*f)(),a=5,b=10; f=add; ... }
答案:3 悬赏:40 手机版
解决时间 2021-04-29 14:53
- 提问者网友:兔牙战士
- 2021-04-28 14:35
有以下程序 int add(int a,int b) {return(a+b)} main() { int k,(*f)(),a=5,b=10; f=add; ... }
最佳答案
- 五星知识达人网友:冷風如刀
- 2021-04-28 15:08
这个题是考察 函数指针的应用方式
使用函数的时候 如果是函数名的调用,编译器会自动转化成函数指针去执行函数。
所以 调用函数就有了两种方式
第一种 就是 答案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;
全部回答
- 1楼网友:大漠
- 2021-04-28 16:26
A、B效果一样,都是值运算,D是函数地址运算,运算结果保存在该函数的地址,C想与A做相同的运算,所以一定是在A、C里面选择,但是C语法错误
- 2楼网友:北方的南先生
- 2021-04-28 16:16
c在执行的时候是*(f(a,b)),题目里面根本就没有f()函数,
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯