首页 > 试题广场 >

有如下C语言程序 #include stdio.h&g.

[单选题]
有如下C语言程序
#include  <stdio.h>
int fun(int * data) {
    *data = *data % 2;
    return (*data) + 1;
}
int main() {
    int data = 12;
    fun(&data);
    printf("%d,", data);
    data = fun(&data);
    printf("%d", data);
}
程序运行后的输出结果是()
  • 0,0
  • 0,1
  • 1,2
  • 12,13
需要注意第一个printf上一句代码是fun(&data),不是data = fun(&data),没有获取fun的返回值,所以data是0,不是1
发表于 2019-09-23 20:23:52 回复(0)
容易粗心犯错
发表于 2020-03-30 20:29:27 回复(0)
&data取地址,所以fun函数运行过后data的值会改变,第一次变为0,第二次是将函数值返回付给data,因此0+1等于1.
发表于 2019-09-12 15:34:27 回复(0)
没有注意到函数参数的传递是指针传递,形参会修饰实参。粗心大意
发表于 2023-03-31 11:14:59 回复(0)
return (*data)+1;第一次返回的虽然是1,但 *data 任然为0;
第二次 *data 的值就变 1 ,但是函数返回的是2 。就是有点小坑
发表于 2022-10-27 11:37:57 回复(2)
&data取地址,所以fun函数运行过后data的值会改变,虽然返回值是1,但是因为没有变量接收,所以打印的是改后的值为0,第二次是有变量接收,因此0+1等于1.
发表于 2023-12-12 19:52:44 回复(0)
一定要仔细审题,函数的返回值为 : (*data) + 1 ,,如果的一次 data 接收了函数的返回值,则 data 的值为1 没毛病,可是它没接收函数的返回值。。。
发表于 2023-02-10 11:06:52 回复(0)
&data取地址,所以fun函数运行过后data的值会改变,第一次变为0,第二次是将函数值返回付给data,因此0+1等于1.
发表于 2022-11-24 19:03:04 回复(0)
0%2=0
发表于 2019-12-25 09:29:06 回复(0)
无语😑
发表于 2023-12-27 18:18:33 回复(0)
第一次地调用函数时,没有返回值。
发表于 2023-02-05 15:42:27 回复(0)
写的时候纳闷不是1,1吗为啥没有,原来我没有带眼睛写题没事了
发表于 2022-10-25 10:02:42 回复(0)
<p>第一个打印时并没有读取函数返回值</p>
发表于 2020-05-18 20:51:19 回复(0)
注意审题
发表于 2020-04-08 10:34:42 回复(0)