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

问题描述 投票:-2回答:1

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

    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;
           }
         }
       }
}
c function pointers
1个回答
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将显示所有警告。

© www.soinside.com 2019 - 2024. All rights reserved.