C语言改变数组中元素的值

标签 c arrays loops

一旦我的程序在我的代码中执行到这个函数,我的程序就会崩溃。我打印了正在进入的函数中的数组,并注释掉了其他所有内容,然后 他们正在正确通过。我不明白为什么它会在这里崩溃。

数组是按升序排列的数字。
也许我的循环或 if 语句不正确?我想当它到达 attackerArmy[d] = '0' 时,我可能没有正确更改数组中索引“d”处的值;//代表 0 被打败了 ?

long int defeatedArmies(long int* attackerArmy, long int* defenderArmy, long int size){

    long int i,j,defeated = 0,d;

    for(i=0;i<size;i++){
        for(j=0;j<size;j++){

        //loop for the highest attack value that is lower than defender
            if(attackerArmy[j] < defenderArmy[i])
                d = j; // save the index where it is highest

            if(attackerArmy[j] > defenderArmy[i])
            //no point in checking unnecessary values
                break;
        }
        attackerArmy[d] = '0'; //represent 0 as defeated
    }

    for(i=0;i<size;i++){
        if(attackerArmy[i] == 0) //count how many defeated armies happened
            defeated++;
    }
return defeated;
}

最佳答案

问题
如果 attackerArmy[j] >= defenderArmy[i] 为真,d 保持未初始化状态,当您在 attackerArmy[d] = ' 中访问它的值时会导致未定义的行为0';.

可能的修复
声明时初始化 d

例如:

long int d = -1L;
...
if(d != -1L) attackerArmy[d] = '0';

关于C语言改变数组中元素的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35738720/

相关文章:

c - 从子进程中的管道读取时,read 系统调用返回 -1

python - 在 Tkinter 中循环遍历小部件

java - 带循环的 setClickListeners

javascript - 在 Apps 脚本中使用索引对数组进行子集化

arrays - 初始化固定长度数组的正确方法是什么?

python-3.x - 如何测试具有多个输入调用的循环?

c++ - 将 malloc 与结构一起使用

c - "request for member ' ****** *' in something not a structure or union"是什么意思?

c - 通过ARM(使用GCC)获取C中汇编标签的地址

java - 在 Java 中编写一个具有默认构造函数和定义如何初始化该类的对象的配置方法的类?