【问题标题】:Array function causes the value of another array to change数组函数导致另一个数组的值改变
【发布时间】:2012-09-27 14:25:53
【问题描述】:

所以,我正在用 C 语言编写一些代码,用于为 ECG 设备处理数据的更大程序。该程序有几个全局 int 数组来存储数据,因为它必须不断过滤数据​​,同时还要使用以前的原始数据和过滤后的数据。因此,我必须不时移动数组中的整数,以便丢弃不再用于过滤的数据并用新的原始数据替换它等等。实现这一点并不比在我的代码中到处实现一些 for 循环来为我做这件事更困难。但是,我想定义一个为我执行此操作的函数,因为我这样做了很多次。因此我编写了这样一个函数,看起来像这样:

void updateArray(int array[], int size){
size = size / sizeof(int);
int i;
for(i = size; i > 0; i--){
    array[i] = array[i-1];
}}

但是,由于我不习惯用 C 编写代码,我显然在这里做错了,因为使用此函数会产生错误的数据。调试该函数,我发现当调用此函数时,数组按预期移动,但我的其他数组之一的其中一个值发生了变化。我不太确定这是为什么,但我真的希望一些反馈可以帮助我更好地理解这个问题。

【问题讨论】:

    标签: c arrays function int overwrite


    【解决方案1】:

    array[size] 超出了数组的末尾。您复制的值太多了。

    应该是:

    void updateArray(int array[], int size) {
        size = size / sizeof(int);
        int i;
        for(i = size - 1; i > 0; i--) {
            array[i] = array[i-1];
        }
    }
    

    【讨论】:

    • 还有一个问题是传入的大小值是否正确......代码期望它是数组的大小(以字节为单位),但也许不是。 (不过,更仔细地阅读 OP 的症状,这可能不是问题。)
    猜你喜欢
    • 2021-01-20
    • 2011-05-12
    • 1970-01-01
    • 2021-09-03
    • 1970-01-01
    • 1970-01-01
    • 2020-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多