c语言 数组元素逆序

来源:互联网 发布:刘强东脸盲 知乎 编辑:程序博客网 时间:2024/05/21 19:29
/*
name :数组的逆序
 由于同一数组中的元素地址连续---建议c语言中对数组的操作,尽量用指针操作数组元素(详见方法2)---减少开销 
*/ 


#include<stdio.h>
int main()
{
    int arr[]={1,3,545,23};
int i=0,j=0;
int n=0,temp=0;

n=sizeof(arr)/sizeof(int);
//打印原来数组
printf("  原来的数组为:") ; 
for(i=0;i<=n-1;i++)
{
printf("%4d",arr[i]);
}
printf("\n");

 
for(i=0,j=n-1;i<j;i++,j=n-1-i)//(i=0,j=n-1-i;i<j;i++)这样写不行---初始化表达式在循环中只执行一次 
  {
  temp=arr[i];
  arr[i]=arr[j];
  arr[j]=temp;
  }
 
printf("逆序后的数组为:");
for(i=0;i<=n-1;i++)
{
printf("%4d",arr[i]);
}
printf("\n");
return 0;

 } 



--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

//方法2


 
#include<stdio.h>
int main()
{
    int arr[]={1,3,8,545,23};
int* subi=NULL;//NULL要大写 
int* supi=NULL;
int temp=0;
int i=0;
int n=0;

n=sizeof(arr)/sizeof(int); 
printf("%p\n",arr);    //测试语句 
printf("%p\n",arr+1); //测试语句,arr+1-arr==sizeof(int)---这里的1 是 逻辑上的1 
for(subi=arr,supi=arr+n-1;subi<supi;subi++,supi--)
  {
  temp=*subi;//交换时还是 值交换 ---但此处使用指针的*运算符取值,指针变量所占内存 < 普通变量 
  *subi=*supi;
  *supi=temp;
  }

for(i=0;i<=n-1;i++)
  {
  printf("%4d",arr[i]);
  }
printf("\n");
return 0;
 } 


原创粉丝点击