为什么a的值不变
#include "stdio.h"int a=0,j;
int qiu(a)
{
for (j=2;j<=a;j++)
{
if (a%j==0)
{
a/=j;
break;
}
}
return j;
}
void main()
{
scanf ("%d",&a);
qiu(a);
printf("%d",a);
}
这是一个求因数的程序,用一个自定义qiu()函数,可是我想把输入的a除以因数j,可是a一直都是原来输入的a
这是为啥!!! 本帖最后由 newu 于 2019-6-19 17:10 编辑
是因为这句
int qiu(int a){}
这个函数的参数,定义的int a是局部变量,屏蔽了全局的a变量,
可以,把a换成任意一个其他的变量名,比如这样
int qiu(int b)
printf("%d",qiu(a));
既没传地址进去,又没被重新赋值。a怎么可能被改变。 风扫地 发表于 2019-6-19 17:07
printf("%d",qiu(a));
既没传地址进去,又没被重新赋值。a怎么可能被改变。
不是啊,我那个qiu里面已经a/=j;这应该已经改变了把 newu 发表于 2019-6-19 17:05
是因为这句
int qiu(int a){}
这个函数的参数,定义的int a是局部变量,屏蔽了全局的a变量,
{:5_108:} newu 发表于 2019-6-19 17:05
是因为这句
int qiu(int a){}
这个函数的参数,定义的int a是局部变量,屏蔽了全局的a变量,
我去!!!原来这样,,感谢大佬,也就是就算我自定义很多函数都用a,可是都是局部,就都不会被改变啊 一壶浊酒l 发表于 2019-6-19 17:21
我去!!!原来这样,,感谢大佬,也就是就算我自定义很多函数都用a,可是都是局部,就都不会被改变啊
对的 newu 发表于 2019-6-19 17:24
对的
蟹蟹{:5_109:}
页:
[1]