C语言在void函数中改变外部变量的值为什么无效啊?

就算把变量设置成全局变量也没用,为什么呢?测试代码如下#include"stdafx.h"#include"stdlib.h"#include"string.h"inta... 就算把变量设置成全局变量也没用,为什么呢?

测试代码如下
#include "stdafx.h"
#include "stdlib.h"
#include "string.h"

int a=1;
void changeValue(int a, int b) {
a = b;
return ;
}

int main(int argc,char *argv[])
{

changeValue(a,2);
printf("%d\n", a);
system("pause");
return 0;
}
输出的a还是1啊,为什么呢?
展开
 我来答
百度网友2018359
2016-10-25 · TA获得超过3494个赞
知道大有可为答主
回答量:3486
采纳率:73%
帮助的人:1398万
展开全部
要注意变量的作用域
定义一个全局变量a
你在changValue(int a, int b)函数中有参数, 变量名也为a, 和全局变量同名, 在此函数中, 所有a变量均是参数传递来的, 并不是全局变量a
解决方法为 改变函数参数的变量名: changValue(int aaa, int b)
如果你不想用全局变量, 那么传送a的地址到函数中, 也可改变a的值
追问

函数参数的变量名改了后还是没有改变结果啊,为什么呢?

追答
子函数中,  a=b;
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式