- 主题:有没有什么简洁办法将数组的前m个元素往后移n位?
前提是不使用临时数组暂存:
下面是通过指针整体移位:
#include <stdlib.h>
#include <stdio.h>
int main()
{
int arr[5] = {1, 2, 3, 4, 5};
int *ptr = arr; // ptr指向数组的第一个元素
int j;
for(j=0;j<5;j++)
{
printf("%4d",ptr[j]);
}
printf("\n");
ptr = ptr - 1;
for(j=0;j<5;j++)
{
printf("%4d",ptr[j]);
}
}
输出结果是:
1 2 3 4 5
0 1 2 3 4
我希望把前3个数往后移一位,而最后的5不变:请问有啥好的办法?多谢
0 1 2 3 5
--
FROM 111.193.229.*
整体平移了一位啊
【 在 slowaction 的大作中提到: 】
: 你这程序没移动元素
--
FROM 111.193.229.*
csdn搜到的
0 1 2 3 4这一行啊
【 在 slowaction 的大作中提到: 】
: 这程序你写的?
: 哪行是移动元素?
--
FROM 111.193.229.*
嗯呐,指针挪了一个位置,数组arr其实没变,但是我也不是太需要,我就是需要一个简
洁操作得到打印结果。似乎是没有捷径的,只有用for循环
【 在 mango7788 的大作中提到: 】
: 1. 你能把你的 code 好好缩进一下吗?
: 2. ptr 是一个指针。你把指针挪了一个位置。
: 一个比方是 对于f(x),你搞了 x'=x-1
: ...................
--
FROM 111.193.229.*
用cterm发表文章的话,就是换行容易乱
下次我用网页发
【 在 mango7788 的大作中提到: 】
: 1. 你能把你的 code 好好缩进一下吗?
: 2. ptr 是一个指针。你把指针挪了一个位置。
: 一个比方是 对于f(x),你搞了 x'=x-1
--
FROM 111.193.229.*