假设有一个数组a,有5个元素,通过键盘输入数组5个元素。调用子函数实现将数组元素相反存放
程序员文章站
2022-07-14 23:51:20
...
数组反序存放可以不用指针也能实现,之前的博客中有提到过
此次的分享着重于指针实现。
代码展示:
#include <stdio.h>
void fan(int *x,int n);
int main()
{
int i,arr[5],*p=arr; //定义一个数组,再定义指针变量将数组名赋值给指针变量。
printf("The original array:\n");
for(i=0;i<5;i++,p++)
scanf("%d",p);//作输入p即表示每一个数组元素的地址
printf("Output:\n");
p=arr;//再次赋值传递给子函
fan(p,5);
printf("The array has been inverted:\n");
for(p=arr;p<arr+5;p++)
printf("%d ",*p);
printf("\n");
return 0;
}
void fan(int *x,int n)
{
int temp,i;
for(i=0;i<n/2;i++)
{
temp=*(x+i);
*(x+i)=*(x+n-i-1);
*(x+n-i-1)=temp;
}
}
代码分析在代码中逐一体现。
for(i=0;i<n/2;i++)
{
temp=*(x+i);
*(x+i)=*(x+n-i-1);
*(x+n-i-1)=temp;
}
这一部分就是核心算法,倒序存放,一开始不容易想出这种算法,对于我来说大部分的C语言题目如同找规律一般,算法确实难想,有兴趣可以买一本算法导论,