| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 797 人关注过本帖
标题:新手遇到返回值问题,能帮我解决一下吗?谢谢了
只看楼主 加入收藏
小弟是新手
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-8-28
结帖率:0
收藏
已结贴  问题点数:20 回复次数:8 
新手遇到返回值问题,能帮我解决一下吗?谢谢了
#include <stdio.h>
int a=3;

int huhuan(int a)
{
     a=5;
    printf("a=%d\n",a);
    return a;
}

int main()
{
    huhuan(a);
    printf("a=%d\n",a);
    return 0;
}
为什么a最后的值不是5而是3
搜索更多相关主题的帖子: include return 
2013-08-28 12:50
我叫沃恩
Rank: 12Rank: 12Rank: 12
来 自:Asia
等 级:贵宾
威 望:10
帖 子:1234
专家分:3865
注 册:2013-3-29
收藏
得分:3 
形参不改变实参的值,,,,

在调用函数中,a是你声明的形参!

不是全局变量a的值!

因为我是菜鸟,所以应该被骂! 细节+坚持=成功!
2013-08-28 12:57
liufashuai
Rank: 9Rank: 9Rank: 9
来 自:冥界-魔域-魂殿
等 级:蜘蛛侠
威 望:1
帖 子:370
专家分:1374
注 册:2012-6-22
收藏
得分:3 
楼上正解:

函数传值作为形参时候,只是实参的一个拷贝(当然指针也是拷贝,但是无所谓,虽然是拷贝但是指向不变,因此可以达到改变值得效果,可以说要想改变指向就要传二级指针)
因此在函数里面改变值相当于改变实参的一个拷贝,其实实参没有变化

有一种落差是,你配不上自己的野心,也辜负了所受的苦难。






2013-08-28 13:20
a877650002
Rank: 2
来 自:黑龙江
等 级:论坛游民
帖 子:43
专家分:47
注 册:2013-3-17
收藏
得分:3 
把你的a=3和a=5换下 你再看看结果
2013-08-28 13:21
jg658237
Rank: 7Rank: 7Rank: 7
来 自:青藏高原
等 级:黑侠
帖 子:224
专家分:529
注 册:2013-8-8
收藏
得分:3 
在形参作用范围内全局变量被屏蔽,
#include <stdio.h>
int a=3;
int huhuan(int a)
{
    printf("a=%d\n",a);
    return a;
}
int main()
{
    huhuan(a);
    printf("a=%d\n",a);
       return 0;
}
                我帮你修改了一下,你试试吧

武功再高也怕菜刀.
2013-08-28 13:29
hl709632728h
Rank: 2
等 级:论坛游民
帖 子:20
专家分:14
注 册:2013-8-27
收藏
得分:3 
#include <stdio.h>
int a=3;//全局

int huhuan(int a)//在这个函数中a按照自己函数定义的值用,也就是a=5
{
     a=5;
    printf("a=%d\n",a);//所以,这个时候打印输出的a=5
    return a;//这里返回的值也是5
}

int main()
{
    huhuan(a);//调用函数,返回5,但是没改变全局a的值      a=huhuan(a);//如果把这里改为a=...那么输出打印便是5了
    printf("a=%d\n",a);//打印a的值,回到了主函数,所以a=3
    return 0;
}

我执行了你的函数,结果数a=5
                        a=3
解释看上面
我看了你的程序,首先呢!你在开头定义的a是全局变量,你在huhuan函数中定义的a是局部变量,那么在通常情况a=全局变量的值,但是当你进入huhuan函数中时,便等于局部变量的值5了。
希望能对你有帮助,不懂再问!

[ 本帖最后由 hl709632728h 于 2013-8-28 15:14 编辑 ]
2013-08-28 15:11
guhemeng
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:100
专家分:165
注 册:2013-7-27
收藏
得分:3 
   游荡一下!
2013-08-28 20:15
lzj12530
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:264
专家分:841
注 册:2013-3-28
收藏
得分:3 
在你的函数里,int a 是一个形参。是局部变量,函数结束会销毁这个变量。
而在你的主函数里,a 是一个全局变量,虽然变量名相同但是作用域不同,因此和函数里面的a 是不同的。因此答案不是5而还是3

C++菜鸟
2013-08-28 21:28
shenxiaoke05
Rank: 2
等 级:论坛游民
帖 子:14
专家分:19
注 册:2013-8-17
收藏
得分:3 
#include <stdio.h>
 int a=3;

 int huhuan(int a)       //如果这里采用指针或引用调用的的话,比如写成 int huhuan(int &a)  或int huhuan(int *a)  ,实参的值是会改变的。
 {
      a=5;
     printf("a=%d\n",a);
     return a;
 }

 int main()
 {
     huhuan(a);  //这个函数的返回值是5,如果你把返回值赋给一个int型变量,输出的就是5。这里是传值调用,不改变实参的值的,
     printf("a=%d\n",a);
     return 0;
 }
2013-08-28 21:31
快速回复:新手遇到返回值问题,能帮我解决一下吗?谢谢了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032195 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved