标题:诡异?子函数为什么会改变调用它函数的变量
取消只看楼主
lebronze
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2016-5-25
结帖率:50%
已结贴  问题点数:20 回复次数:0 
诡异?子函数为什么会改变调用它函数的变量
写了一个程序,老是报错,后面单步调试发现问题出在:调用子函数时,子函数执行完,结果调用它的函数中的变量居然变了??

下面是部分代码:
程序代码:
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



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




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

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