微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

交换 c 中的值以反转数组,但数组/内存块保持不变

如何解决交换 c 中的值以反转数组,但数组/内存块保持不变

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

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

我发现适当的代码指示创建新的数组/内存块来收集值并分配它们并打印,但这不是我通常想到的方法

欢迎所有答案。感谢帮助!

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

解决方法

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

PS> '<nope>','<foo>','<bar>','<foobar>','<>' |
      ForEach-Object { $_ -match '<(foo)*(bar)*>' }

False
True
True
True  # !! '<foobar>' matched too
True  # !! '<>' matched too.

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

 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;
 } 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。