如何使用指针组织我的数组,而不使用[]运算符

时间:2017-12-23 11:29:44

标签: c function pointers

我需要组织我的数组来查找中位数。我不能在我的问题中使用_ []运算符,我看不出为什么我的代码不起作用

    int Median(int* numbers, int size)
{
    int temp;
    int *num_tmp = numbers;
    int i, j;
        for (i = 0; i< size - 1; i++) {
        for (j = i + 1; j< size; j++) {
            if (*(num_tmp+1) < num_tmp) {
                temp = num_tmp;
                num_tmp = (num_tmp+1);
                *(num_tmp+1) = temp;
           }
         }
       }
}

1 个答案:

答案 0 :(得分:0)

你明白了但没有正确使用它。

if (*(num_tmp+1) < num_tmp)
    ^ ^^^^^^^^     ^^^^
   An int value    A pointers value

您正在将地址与int变量进行比较。你不希望这样。改变一点会产生,

if (*(num_tmp+1) < *num_tmp)

现在问它在逻辑上是对的吗?不。算法仍然是错误的。

应该是

if (*(num_tmp+j) < *(num_tmp+i))
{
     temp = *(num_tmp+j);
     *(num_tmp+j) = *(num_tmp+i);
     *(num_tmp+i) = temp;
}

使用此代码,您将正确组织阵列。

此外,如果您使用gcc编译程序,请添加-Wall -Werror,以显示所有警告。