我有一个任务是将一个真实的数组向右移动n个元素,我已经成功地完成了这个任务,但是我注意到我应该只使用地址和指针。我试着用地址重写代码,但是似乎不起作用,有人能帮我吗?
所以这里的代码是工作,但它使用的索引方法,希望你能帮助我,因为我是哑巴,不能重写它正确(
#include <stdio.h>
#include <math.h>
#define N 5
void main() {
double ar[N] = {1.2, 2.2, 3.3, 4.4, 5.5};
int n;
int save;
printf_s("Enter an n:");
scanf_s("%d", &n);
int length = sizeof(ar) / sizeof(ar[0]);
while (n) {
save = ar[N - 1];
for (int i = N - 1; i > 0; i--)
ar[i] = ar[i - 1];
ar[0] = save;
n--;
}
for (int i = 0; i < length; i++) {
printf("%f; ", ar[i]);
}
}
3条答案
按热度按时间vbopmzt11#
你应该会发现很多关于数组指针递增的引用。下面是一个供你参考的Pointer Arithmetic。
以它为参考,下面是一个经过调整的程序版本,用一个递增和递减的指针替换数组索引。
对此进行测试,结果为以下终端输出。
给予一下,看看它是否符合你的项目的精神。
rkttyhzu2#
将ar[x]与 *(ar +(x))交换,结果成功了。
pvcm50d13#
下面是基于您的代码的实现,
输出: