标题:函数值传递问题
只看楼主
落雨and无声
Rank: 2
等 级:论坛游民
帖 子:48
专家分:30
注 册:2012-10-5
结帖率:88.89%
已结贴  问题点数:10 回复次数:9 
函数值传递问题
各路大神,一个很简单的问题。就是struct定义的类型中如果有数组,在定义某个变量后把该变量作为函数参数传入函数,并在该函数中对数组进行了修改,是否会影响到原来数据的值?还是说跟我strct的位置有关?代码如下
程序代码:
typedef struct test{
    int data[10000];
    clock_t start,end;
}test;
test b;
void Ins_sort(test a)//排序函数
Ins_sort(b)//是否会修改b中data的值
搜索更多相关主题的帖子: start 影响 
2013-01-07 22:10
w527705090
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:11
帖 子:441
专家分:1882
注 册:2011-6-28
得分:0 
不会。

有心者,千方百计;无心者,千难万难。
2013-01-07 22:16
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
得分:8 
全局的会,函数内定义的不会


新手发言

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2013-01-07 22:17
落雨and无声
Rank: 2
等 级:论坛游民
帖 子:48
专家分:30
注 册:2012-10-5
得分:0 
回复 3楼 yaobao
哦,谢谢版主了。。。为啥版主说自己是新手
2013-01-07 22:19
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
得分:0 
确实是新手啊

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2013-01-07 22:21
落雨and无声
Rank: 2
等 级:论坛游民
帖 子:48
专家分:30
注 册:2012-10-5
得分:0 
回复 5楼 yaobao
。。。可是已经到了版主的等级了啊,版主不是只有那么几个么
2013-01-07 22:24
落雨and无声
Rank: 2
等 级:论坛游民
帖 子:48
专家分:30
注 册:2012-10-5
得分:0 
回复 5楼 yaobao
还要补充一下,是跟我typedef struct的位置有关还是跟我定义变量的位置有关?比如我在外部定义的结构体,然后在main函数中用test定义了一个变量b,把b传入刚刚的函数中,那么b中的data是否会被排序?还是只有a中的data被排序了?
2013-01-07 22:29
心向往之
Rank: 1
等 级:新手上路
帖 子:4
专家分:2
注 册:2009-12-20
得分:2 
不会 同样只是值传递
2013-01-07 22:34
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
得分:0 
在函数外定义的变量时全局可见的,只要你的代码块里没有和他同名的变量就不会被屏蔽,
你在main函数里定义了一个变量,然后值传递给函数,相当于传了个副本过去,和你main函数里的变量已经基本没什么关系了。你原来发的那段代码a只是函数原型里的一个....怎么说呢,无用的东西,他丝毫作用没有,不用考虑他,去掉最好
typedef struct只是定义一个数据类型,并起了一个名字,他的位置不会改变变量的作用域,当然,变量一定在他的后面了
如果你想改变传的b变量,那么传地址好了

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2013-01-07 22:39
落雨and无声
Rank: 2
等 级:论坛游民
帖 子:48
专家分:30
注 册:2012-10-5
得分:0 
回复 9楼 yaobao
懂了,谢谢
2013-01-07 22:46



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-395678-1-1.html




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

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