【c语言】指针实现数组元素的移位
方案一、显示上移位,实际不发生移位。。
#include<stdio.h>
#include<math.h>
void main(){
int a[10],i,*p,n;
n=4;
srand(time());
printf("数组:");
for(i=0;i<10;i++){
a[i]=rand()%100;
printf("%-4d",a[i]);
}
printf("\n");
p=&a[n];
printf("现在的素组");
for(i=n;i<10;i++){
printf("%-4d",*p++);
}
for(i=0;i<n;i++){
printf("%-4d",a[i]);
}
printf("\n");
}
方案二、显示和实际都发生移位。
#include<stdio.h>
void move(int *pa,int n,int m){
int *p,*q;
int i,temp;
for(p=pa+n-m;p<pa+n;p++){
temp=*p;
for(q=p-1;q>=p-(n-m);q--)
*(q+1)=*q;
*(q+1)=temp;
}
}
main(){
int number[10],m,i;
printf("back m:");
scanf("%d",&m);
printf("input array 10 elements.\n");
for(i=0;i<10;i++)
scanf("%d",&number[i]);
move(number,10,m);
for(i=0;i<10;i++)
printf("%d ",number[i]);
printf("\n");
}