将 c 中的值交换为反向数组,但 array/memory 块保持不变

swapping values in c to reverse array but the array/memory blocks remain unchanged

我只是想反转数组。似乎下面的代码片段有一些问题。 (这里的第一个问题还不精通 c。) 问题: 即使在执行此代码块后,数组中的值仍保持不变。

起初,我使用 malloc() 为数组元素分配内存, 后来使用了静态数组。 还将 temp 更改为指针类型, 通过创建另一个临时文件(例如 lamp)来防止直接赋值,用动态内存初始化它们。 另外,我没有使用取消引用运算符就做到了。 但是什么都没有解决。 问题似乎出在这段代码中。但是还没认出来

我找到了适当的代码,指示 创建新的 array/memory 块 来收集值并分配它们并打印,但这不是我通常想做的方法。

欢迎大家回答。感谢您的帮助!

     for(i=0;i<num;i++)
   
    {
        temp = arr[i];
        arr[i] = arr[num-(i+1)];
       arr[num-(i+1)] =temp;
    }   

问题是您在 for 循环中使用了错误的条件

 for(i=0;i<num;i++)
         ^^^^^

例如,如果您有一个包含两个元素的数组

int arr[2] = { 1, 2 };

然后在循环的第一次迭代之后当 i 等于 0 时数组将是

{ 2, 1 }

但是在循环的第二次迭代之后数组将再次

{ 1, 2 }

改为

 for ( i = 0; i < num / 2; i++ )
 {
     temp = *(arr+i);
     *(arr+i) = *(arr+(num-i-1));
     *(arr+(num-i-1)) = temp;
 } 

还在使用变量的最小范围内声明变量。例如

 for ( size_t i = 0; i < num / 2; i++ )
 {
     int temp = *(arr+i);
     *(arr+i) = *(arr+(num-i-1));
     *(arr+(num-i-1)) = temp;
 }