| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1170 人关注过本帖
标题:诡异?子函数为什么会改变调用它函数的变量
只看楼主 加入收藏
lebronze
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2016-5-25
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:6 
诡异?子函数为什么会改变调用它函数的变量
写了一个程序,老是报错,后面单步调试发现问题出在:调用子函数时,子函数执行完,结果调用它的函数中的变量居然变了??

下面是部分代码:
程序代码:
void data_pre(int *voice_data, long data_size, short framelen)  //函数原型

//部分函数内容:
pre_emp[0]=(float)voice_data[0];                          
for (i=1;i<data_size;i++)                  
{
    pre_emp[i]=(float)(voice_data[i]-0.97*voice_data[i-1]);    
}

就执行了上面的for循环,结果发现data_size,framelen这些传进来的变量值居然变了,而且变得很大。。。
百思不得其解,子函数怎么能改变调用它的函数中的变量??没见过这种问题
数组越界,内存泄露的问题都不存在,for循环里就一句话也没错,想不通啊
还望各位高手指导指导
2016-07-18 17:13
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:0 
最好能贴个完整代码,这个看不出来有什么问题
2016-07-18 17:21
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:4 
单看子函数看不出什么问题。关键还是要看如何将实参传递给形参。最好是将实参的代码也发出来。
2016-07-18 19:11
hacker_yang
Rank: 1
等 级:新手上路
帖 子:1
专家分:4
注 册:2016-7-18
收藏
得分:4 
主函数里初始化了吗?
2016-07-18 19:47
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:4 
既然牵扯到参数传递自然形参和实参两个部分的程序都贴出来才好分析的哦,有进有出才能全面些
2016-07-19 08:28
Alien_Lee
Rank: 8Rank: 8
来 自:Linux帝国
等 级:蝙蝠侠
威 望:7
帖 子:149
专家分:739
注 册:2016-7-19
收藏
得分:4 
同样作为新手,在这里学会了一个提问题的基本的要求和技巧。与楼主共勉!

  DEBUG的过程就是进步的过程,每一个小错误都是大问题!...
2016-07-19 11:36
StadyC
Rank: 6Rank: 6
等 级:侠之大者
威 望:6
帖 子:182
专家分:430
注 册:2016-10-13
收藏
得分:0 
你看看变量是否是全局变量
2016-10-17 16:29
快速回复:诡异?子函数为什么会改变调用它函数的变量
数据加载中...
 
   



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

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