求助一道二级c语言题

来源:百度知道 编辑:UC知道 时间:2024/05/10 13:29:14
void fun2(char a,char b) {printf("%c%c",a,b);}
char a='A'; char b='B';
void fun1() {a='C';b='D';}
main()
{ fun1();
printf("%c%c",a,b);
fun2('E','F');
}
fun1函数是void 型,不返回值,为什麽a='C';b='D'

fun1函数确实是void型,不返回值,但不影响(a='C,b=D'),因为这是函数执行部分。调用它a等于字符C,b等于字符D,是局部变量,在函数内有意义.比方有函数
void main()
{int a=2,b=3...
}

a,b是全局变量,它俩的作用域是全局的,也就是说,因为fun1()函数里面没有定义a,b,那么里面使用的a,b就是全局的a,b,所以调用fun1(),就修改了a,b的值。

void fun2(char a,char b) {printf("%c%c",a,b);}
char a='A'; char b='B'; \\ 全局变量a,b
void fun1() {a='C';b='D';}
main()
{ fun1();
printf("%c%c",a,b);
fun2('E','F');
}
当你第一次调用fun1() 的时候已经把a,b改成'C','D'了
printf("%c%c",a,b); 就得出a='C';b='D'

原因是a,b是全局变量,它俩的作用域是全局的
只要在函数中没有声明 int a,b;
那么凡是对a,b进行的操作都是对
char a='A'; char b='B'; \\ 全局变量a,b
中的a,b的操作