| 
 
   在c/c++中利用數(shù)組名作為函數(shù)參數(shù)傳遞排序和用指針進行排序的例子。   以下兩個例子要非常注意,函數(shù)傳遞的不是數(shù)組中數(shù)組元素的真實值而是數(shù)組在內(nèi)存中的實際地址。 #include <stdio.h>      void main(void)   {      void reversal();   static int a[10] = {0,1,2,3,4,5,6,7,8,9}; /* 建立一個數(shù)組并初始化 */  int i;   for (i=0;i<10;i++)   {   printf("%d ",a);   }   printf("\n");   reversal(a,10); /* 調(diào)用自定義涵數(shù)進行反向顯示排序,并把數(shù)組a的起始地址傳送給形式參數(shù)x */     for (i=0;i<10;i++)   {   printf("%d ",a);   }   printf("\n");      }      void reversal(x,n)   int x[],n; /* 定義形式參數(shù) */  {   int m=(n-1)/2; /* 計算10個數(shù)需要循環(huán)幾次,因為是兩兩調(diào)換第一個數(shù)組是x[0]故應(yīng)該是int(9/2) */  int temp,i,j; /* 建立零時變量temp用于每次交換處理時零時存儲x的值 */  for (i=0;i<=m;i++)   {   j=n-1-i; /* 反向計算出被調(diào)換的數(shù)組下標,例如x[0] 對應(yīng)的x[n-1-i]就是x[9] */  temp=x;   x=x[j];   x[j]=temp;   }   }      /* 次題需要注意的是:這里由于a[10]和x[10]是共同享內(nèi)存地址位的所以進行交換后a[10]的實際值也就發(fā)生了改變 */  
 
 #include <stdio.h>      void main(void)   {      void reversal();   static int a[10] = {0,1,2,3,4,5,6,7,8,9}; /* 建立一個數(shù)組并初始化 */  int i;   for (i=0;i<10;i++)   {   printf("%d ",a);   }   printf("\n");   reversal(a,10); /* 調(diào)用自定義涵數(shù)進行反向顯示排序,并把數(shù)組a的起始地址傳送給形式參數(shù)x */     for (i=0;i<10;i++)   {   printf("%d ",a);   }   printf("\n");      }      void reversal(x,n)   int *x,n; /* 定義x為指針變量 */  {   int temp,*p,*i,*j; /* 這里需要注意的是temp用與交換的時候臨時存儲數(shù)據(jù)的 */  i = x; /* 利用指針變量i存儲數(shù)組a的起始地址 */  p = x + ((n-1)/2); /* 計算最后一次循環(huán)的時候數(shù)組a的地址 */  j = x + n - 1; /* 計算數(shù)組a也就是a[9]的結(jié)束地址好用于交換 */  for (;i<=p;i++,j--) /* 利用循環(huán)和指針進行數(shù)組元素值的交換 */  {   temp=*i; /* 用temp臨時存儲*i也就是循環(huán)中a實際的值 */  *i=*j;   *j=temp;   }   }      /* 此例同樣要注意到利用指針進行數(shù)組的操作同樣改變了實際數(shù)組各元素的值 */  
 |