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]);
} 展开
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]);
} 展开
3个回答
展开全部
因为你是传的值,你传指针就好了~~
#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]);
}
解答完毕,看注释,如果还有问题可以追问我~~
#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]);
}
解答完毕,看注释,如果还有问题可以追问我~~
展开全部
按值传递参数当然不行,按引用传递吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
肯定不会改变的了,你调用的函数judge中的a,b是局部变量,改变它们的值对全局变量a,b没有影响,你mian中调用的a,b是全局变量,和judge调用的a,b不是同一个.用引用传递或者是指针传参的方法试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询