c - 函数中的数组成员比较不起作用

标签 c arrays pointers

首先,我什至不确定你是否称它为成员(member),想不出更好的词。

我正在尝试学习调试和数组的基础知识 - 所以我想从内存中创建类似于插入排序的东西(这样会犯错误),然后调试程序。

void findingsmaller (int *array, int num_inputs){
    int a = 0;
    int b = 1;

    for ( b=1; b == num_inputs-1; b++ ) {
        if ( array[a] > array[b] ) {
            goleft(array, a, b);
            a++;
        }
    }
}

假设我们在数组中有这个:6 5 3 1 8 7 2 4 . array[a] 应该是 6 array[b] 应该是 5 . 6 > 5所以我们应该输入函数来查找数组左侧第一个较小的数字。

从我的调试 session 来看,条件似乎是 FALSE所以我不输入 goleft根本。更具体地说,Step into忽略它,测试 printf 也没有执行。我假设数组比较没有正确编写,更正是什么?

WHOLE CODE如果有人想查看其他可能的错误。

提前致谢!

编辑:<= num_inputs是正确的,不知何故我认为for(range1, range2, change)而不是 (start, condition, change) .无论如何,现在问题似乎是我的goleft函数执行其 do-while循环一次太多了,尽管它不应该超过那个条件。

EDIT2:修复了其他几个错误。

  1. 我在 main 中打印现在是for( ; i <= num_inputs-1; )

  2. 我的 goleft由于条件会进行太多迭代,固定为 ... while ( a >= 0 && array[a] > array[b] )

  3. 我的 findingsmaller只会在下一个数字较小时运行,但在数字较大时不执行任何操作。例如 6 8该程序将无法正常运行。已添加 else {a++}

我的固定 code对于任何对更改比较感兴趣的人。

最佳答案

只要条件为真,for循环就会执行。

for ( ;Condition; )
{
// body
}

在您的 for 循环中,如果输入大于 1,则条件始终为 False。

关于c - 函数中的数组成员比较不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34099098/

相关文章:

c - 两遍 C 预处理?

javascript - 如何将由数学计算组成的字符串拆分为数组?

c - 删除字符串后的空格(指针)

c - 有没有办法停止和恢复 C 程序

c - 这段反汇编代码中发生了什么,在 C 中会是什么样子?

javascript - 使用 underscore.js 展平对象的 javascript 数组

javascript - JavaScript 的 forEach 循环如何决定跳过或迭代数组中的 "undefined"和 "null"元素?

java - 我的程序抛出一个空指针异常,我不知道为什么。有人给我一双新鲜的眼睛吗?

c - 两个警告 : assignment makes integer from pointer without a cast and comparison between pointer and integer

c - 未知类型名称 'ssize_t'