C语言 请问这道题为什么调用函数后不能改变a和b的值?

#include<stdio.h>inta,b;voidjudge(inta,intb){if(a>2||b>3){printf("输入错误:");scanf("%d%d... #include <stdio.h>
int a,b;

void judge(int a,int b)
{

if(a>2||b>3)
{
printf("输入错误: ");
scanf("%d %d",&a,&b);
}
}

void main()
{
int num[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};

printf("请输入行数和列数: ");
scanf("%d %d",&a,&b);

judge(a,b);
printf("NUM[%d][%d] = %d",a,b,num[a][b]);
}
展开
 我来答
lovebblyc
2012-10-30 · TA获得超过287个赞
知道小有建树答主
回答量:117
采纳率:0%
帮助的人:114万
展开全部
因为你是传的值,你传指针就好了~~
#include <stdio.h>
int a,b;

void judge(int * a,int * b)
{

if (*a>2||*b>3)
{
printf("输入错误: ");
scanf("%d %d",a,b);
}
}

void main()
{
int num[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};

printf("请输入行数和列数: ");
scanf("%d %d",&a,&b);

judge(&a,&b);//传的是地址
printf("NUM[%d][%d] = %d",a,b,num[a][b]);
}

解答完毕,看注释,如果还有问题可以追问我~~
beddy1
2012-10-30 · TA获得超过1988个赞
知道大有可为答主
回答量:2271
采纳率:0%
帮助的人:2173万
展开全部
按值传递参数当然不行,按引用传递吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
long891122
2012-10-30
知道答主
回答量:10
采纳率:0%
帮助的人:6.4万
展开全部
肯定不会改变的了,你调用的函数judge中的a,b是局部变量,改变它们的值对全局变量a,b没有影响,你mian中调用的a,b是全局变量,和judge调用的a,b不是同一个.用引用传递或者是指针传参的方法试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式