c - 如何在不更改 C 中原始数组的情况下对指针数组进行排序

标签 c arrays sorting pointers numbers

给定两个数组:int nums[N] 和 int *ptrs[N](N 是常数)。 我必须用一些数字初始化第一个数组。之后,我必须初始化第二个数组,因此第二个数组的每个元素都指向与第一个数组具有相同索引的元素。 (ptrs[0] 指向 nums[0],...)。

现在我必须编写一个以“ptrs”作为参数的函数,该函数修改指针,使第二个数组的第一个元素指向第一个数组中的最小数字,..)

不允许更改“nums-array”,只能更改“ptrs-array”。

这是我已经拥有的代码,但是当我运行它时,“nums-array”也会发生变化。 我做错了什么?

    #include <stdio.h>
    #define N 6
    void sort(int *ptrs);
    int main()
    {
        int nums[N] = { 1,6,7,8,2,5 };
        int(*ptrs)[N];
        int i;
        ptrs = nums;



        sort(ptrs);

        for (i = 0; i < N; i++)



            printf("nummer is: %d en %d\n", (*ptrs)[i], nums[i]);


         return 0;
      }
      void sort(int *ptrs)
      {
        int i, j, tmp;


        for (i = 0; i < N; i++)

            for (j = i + 1; j < N; j++)

                if ((ptrs)[i] > (ptrs)[j])
                {
                    tmp = (ptrs)[i];
                    (ptrs)[i] = (ptrs)[j];
                    (ptrs)[j] = tmp;
                }

      }

最佳答案

修复第一部分:

int main()
{
    int nums[N] = { 1,6,7,8,2,5 };
    int *ptrs[N];                    // fix
    int i;
    for(i = 0; i < N; i++)           // fix
        ptr[i] = nums+i;             // fix (or ptr[i] = &nums[i])

关于c - 如何在不更改 C 中原始数组的情况下对指针数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54282161/

相关文章:

java - JSON 对象数组转 Java POJO

javascript "header"文件存储一些数据

c - 如果标准输出被调用 exec 的进程关闭,如何重新打开它

arrays - 股票价格的最大利润

sorting - 在go lang中按动态字段排序

java - 使用Coamparable接口(interface)在java中进行排序和二次排序

java - 如何在不改变列表的情况下对列表进行排序

c - Strtok 使用动态内存

c - 简单的 C 数字格式

c - 我们如何在 SDL_Event( union )中分配两个值?