一壶浊酒l 发表于 2019-6-19 16:58:09

为什么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:05:22

本帖最后由 newu 于 2019-6-19 17:10 编辑

是因为这句
int qiu(int a){}
这个函数的参数,定义的int a是局部变量,屏蔽了全局的a变量,

可以,把a换成任意一个其他的变量名,比如这样
int qiu(int b)

风扫地 发表于 2019-6-19 17:07:43


   printf("%d",qiu(a));

既没传地址进去,又没被重新赋值。a怎么可能被改变。

一壶浊酒l 发表于 2019-6-19 17:10:36

风扫地 发表于 2019-6-19 17:07
printf("%d",qiu(a));

既没传地址进去,又没被重新赋值。a怎么可能被改变。

不是啊,我那个qiu里面已经a/=j;这应该已经改变了把

一壶浊酒l 发表于 2019-6-19 17:11:42

newu 发表于 2019-6-19 17:05
是因为这句
int qiu(int a){}
这个函数的参数,定义的int a是局部变量,屏蔽了全局的a变量,


{:5_108:}

一壶浊酒l 发表于 2019-6-19 17:21:23

newu 发表于 2019-6-19 17:05
是因为这句
int qiu(int a){}
这个函数的参数,定义的int a是局部变量,屏蔽了全局的a变量,


我去!!!原来这样,,感谢大佬,也就是就算我自定义很多函数都用a,可是都是局部,就都不会被改变啊

newu 发表于 2019-6-19 17:24:14

一壶浊酒l 发表于 2019-6-19 17:21
我去!!!原来这样,,感谢大佬,也就是就算我自定义很多函数都用a,可是都是局部,就都不会被改变啊

对的

一壶浊酒l 发表于 2019-6-19 17:39:58

newu 发表于 2019-6-19 17:24
对的

蟹蟹{:5_109:}
页: [1]
查看完整版本: 为什么a的值不变