将 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;
}
我只是想反转数组。似乎下面的代码片段有一些问题。 (这里的第一个问题还不精通 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;
}