| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 517 人关注过本帖
标题:C语言变量赋值问题
只看楼主 加入收藏
南国雨
Rank: 1
等 级:新手上路
帖 子:26
专家分:9
注 册:2015-2-1
结帖率:72.73%
收藏
 问题点数:0 回复次数:9 
C语言变量赋值问题
我在主函数中定义了 int i;
然后在将i当作参数传到一个函数fun(i)中。
在fun函数中,执行了i=3;
然后函数调用结束后,我输出i的值,为什么是地址值,而不是3?
搜索更多相关主题的帖子: C语言 
2015-03-17 23:09
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你寫錯了唄

授人以渔,不授人以鱼。
2015-03-17 23:15
code力力
Rank: 5Rank: 5
来 自:宜昌
等 级:职业侠客
威 望:2
帖 子:215
专家分:338
注 册:2015-1-12
收藏
得分:0 
我应该问,为什么不是  1  。。。。。。。

你醒了?快起来敲代码!!
2015-03-17 23:54
南国雨
Rank: 1
等 级:新手上路
帖 子:26
专家分:9
注 册:2015-2-1
收藏
得分:0 
回复 3楼 code力力
不是将3赋值给i的吗?
2015-03-18 00:09
kin3z
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:157
专家分:390
注 册:2011-4-24
收藏
得分:0 
对啊,没代码,没真相啊。。。。
2015-03-18 02:01
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
不会提问的孩子

DO IT YOURSELF !
2015-03-18 08:59
hanxiaoyi
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2015-3-18
收藏
得分:0 
回复 楼主 南国雨
有两点:
1、int i; i没初始化,它的值是个随机值,并不是地址。
2、函数的参数,给它传参时,实际上是在函数中新定义了一个变量,只不过是把传进去的变量的值赋给它。
比如:void fun(int num),int i=3,调用时fun(i),实际上是在函数fun里定义int num,然后num=i;  在函数里对num进行的任何操作都不会
影响到i。这就是形参跟实参的关系了,你可以自己再了解下。
如果你要用函数对i进行赋值,那就得传地址进去,fun(int *num); fun(&i);这样子。也可以用引用的方法(引用的说简单点就是重命名),
fun(int &num); fun(i);  这样子,num就相当于i了,两个使用的是同一个内存地址。


回答得还算详细吧^^
2015-03-18 10:09
code力力
Rank: 5Rank: 5
来 自:宜昌
等 级:职业侠客
威 望:2
帖 子:215
专家分:338
注 册:2015-1-12
收藏
得分:0 
来看看你的步骤:
你是在函数结束后再输出的i的值。
也就是在main函数里面输出i的值。
你就算在函数里面写一万遍i=3,
这个函数结束了,这个函数里面的i就over了
main函数里面的i  还是原来那个i,
也就是相当于你值定义了i,没对他赋值一样。
你这这个程序,i的值是个垃圾值,他的值是不可预测的。
图片附件: 游客没有浏览图片的权限,请 登录注册

你醒了?快起来敲代码!!
2015-03-18 10:21
飘呀叶子
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2015-3-20
收藏
得分:0 
这能赋值成功就怪了。
void fun(int *i){
    *i = 3;
}
fun(&i);
2015-03-21 00:04
qqqwer
Rank: 1
等 级:新手上路
帖 子:8
专家分:6
注 册:2015-1-27
收藏
得分:0 
在你的程序中,在调用函数时,只是把实参的值传递给形参,而且形参是在被调用的函数里被定义,两个参数之间
只有值的传递,如果想要通过修改形参进而修改实参的话,需要用到指针来直接对变量的内存进行访问。

自学C语言,有说错的轻喷。。
2015-03-21 00:41
快速回复:C语言变量赋值问题
数据加载中...
 
   



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

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