下列程序的输出结果 fun(int a,int b,int c) {c=a*b;} int main(void) {int c; fun(2,3,c); p

下列程序的输出结果
fun(int a,int b,int c)
{c=a*b;}
int main(void)
{int c;
fun(2,3,c);
printf("%d\n",c);
return 0;
}
A.0 B.1 C.6 D.无法确定
我们老师给的答案是D,为什么?

因为fun中的c不是main中的c, 当fun函数return后,fun中的c生命就结束了,而main中的c依然还是一个没有初始化的变量,所以是一个不确定的值追问

那为什么程序运行完结果是0,为什么不选0

追答

你运行的结果是0是因为你运行的是debug环境,在这种环境下,大多数的编译器都会把变量初始化为0,但最终使用的是release版本,不是debug版本。release的环境里,不会帮你做任何初始化的动作

温馨提示:内容为网友见解,仅供参考
无其他回答

...a,int b,int c) {c=a*b;} int main(void) {int c; fun(2,3,c...
函数fun执行完成后,丝毫也不会影响到主程序中的变量c的取值,因此答案是D

下列程序的输出结果是( D )。 fun(int a, int b, int c) { c =a
fun(int a, int b, int c)\/\/望采纳!^_^ { c =a*b; }\/\/这里将c的结果为a*b,但并未改变外面那个c的值 main( ){ int c;\/\/这里声明变量c,但并未赋值,也就是说c是一个随机值 fun(2,3,c);\/\/这里将c当参数传递给fun函数,fun函数运算过后,外面c的值并未改变,改变的只是fun...

fun(inta,intb,intc){c=a*b}main(){intc;fun(2,3,c);Printf("%d\\n",c...
include "Stdio.h"int fun(int a,int b,int c){ c=a*b;return c;}int main(void){ int c;c=fun(2,3,c);printf("%d\\n",c);getch();return 0;}

...void fun(int *a,int *b) {int *c; c=a;a=b;b=c; }
fun(&x,&y)是让a指向x,b指向y,你会发现这根本没涉及到p和q的指向,更谈不上改变它们的指向,所以答案选B啊。

...void fun(int *a, int *b) { int *k; k=a; a=b; b=k; }
结果没变还是3 6 x y分别是指向a b的指针,fun函数只是交换了x y指向指向的地址,不影响a b的值

...void fun(int*a,int*b) {int*c; c=a;a=b;b=c;} main() {int x=...
再回到fun函数中,可以看出,a和b的值(x和y的地址)是交换了,也即是说a原本指向x,现在指向了y,对应的b改为指向x。但这只能说a和b间有变化。会影响到x和y吗?也不会。所以fun函数其实对x,y,p,q没有产生任何的影响,当然结果就应该是3,5,3,5了。希望你看过之后可以理解清楚。

...#include"stdio.h" void fun(int a,int b,int c)
9,x,y,z为实际参数,a,b,c为形式参数,在调用的时候取的是实际参数的值,所以A 10,w=u%v=8;u=v=16;v=w=8;继续循环;w=u%v=0;u=v=8;v=w=0;循环结束(v=0)return u = 8;12,宏定义就是一模一样的抄下来的,S(a+b):PT*x*x:PT*a+b*a+b:PT*1+2*1+2=9...

...void fun(int *a,int *b) {int *c; c=a;a=b;b=c; } main() {int...
include<stdio.h> void fun(int *a,int *b){ int *c;c=a;a=b;b=c;} main(){ int x=3,y=5,*p=&x,*q=&y;fun(p,q);printf("%d,",*p,*q);fun(&x,&y);printf("%d,%d\\n",*p,*q);return 0;}

void fun(int *a,int *b) { int *c; c=a;a=b;b=c; } main() { int x...
void fun_1(int **a,int **b){ int *c;c=*a;*a=*b;*b=c;} void fun_2(int *a,int *b){ int c;c=*a;*a=*b;*b=c;} 调用 fun_1(&p,&q); printf("%d,%d\\n",*p,*q);fun_2(&x,&y); printf("%d,%d\\n",x,y);...

...void fun(int *a,int *b) {int *k; �k=a;a=b;b=k; } main...
答案选B.函数 fun(int* a,int* b)的两个参数类型都是int*型.也就是说,参数变量a, b本身的值不会变.当传入两个实参int* x , int* y后.尽管fun里面作了交换操作,这种交换不会影响到原来的x,y变量值.要象这样定义FUN函数,才有意义.void fun(int *a,int *b){int k;�k=*a...

相似回答