日本电影韩国电影免费观看_好粗好快受不了了|HD中文字幕在线播放,日韩欧美电影在线观看,两根黑粗一起进3p夜夜嗨av,性色av一区太久av19

正在閱讀:C/C++中利用數組名/指針進行排序實例C/C++中利用數組名/指針進行排序實例

2005-02-25 11:01 出處:PConline 作者:管寧 責任編輯:huangpeidan
 

  在c/c++中利用數組名作為函數參數傳遞排序和用指針進行排序的例子。

  以下兩個例子要非常注意,函數傳遞的不是數組中數組元素的真實值而是數組在內存中的實際地址。

#include <stdio.h> 
 
void main(void

 
void reversal(); 
static int a[10] = {0,1,2,3,4,5,6,7,8,9}; /* 建立一個數組并初始化 */
int i; 
for (i=0;i<10;i++) 

printf("%d ",a); 

printf("\n"); 
reversal(a,10); /* 調用自定義涵數進行反向顯示排序,并把數組a的起始地址傳送給形式參數x */
 
for (i=0;i<10;i++) 

printf("%d ",a); 

printf("\n"); 
 

 
void reversal(x,n) 
int x[],n; /* 定義形式參數 */

int m=(n-1)/2; /* 計算10個數需要循環幾次,因為是兩兩調換第一個數組是x[0]故應該是int(9/2) */
int temp,i,j; /* 建立零時變量temp用于每次交換處理時零時存儲x的值 */
for (i=0;i<=m;i++) 

j=n-1-i; /* 反向計算出被調換的數組下標,例如x[0] 對應的x[n-1-i]就是x[9] */
temp=x; 
x=x[j]; 
x[j]=temp; 


 
/* 次題需要注意的是:這里由于a[10]和x[10]是共同享內存地址位的所以進行交換后a[10]的實際值也就發生了改變 */



#include <stdio.h> 
 
void main(void

 
void reversal(); 
static int a[10] = {0,1,2,3,4,5,6,7,8,9}; /* 建立一個數組并初始化 */
int i; 
for (i=0;i<10;i++) 

printf("%d ",a); 

printf("\n"); 
reversal(a,10); /* 調用自定義涵數進行反向顯示排序,并把數組a的起始地址傳送給形式參數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用與交換的時候臨時存儲數據的 */
= x; /* 利用指針變量i存儲數組a的起始地址 */
= x + ((n-1)/2); /* 計算最后一次循環的時候數組a的地址 */
= x + n - 1; /* 計算數組a也就是a[9]的結束地址好用于交換 */
for (;i<=p;i++,j--) /* 利用循環和指針進行數組元素值的交換 */

temp=*i; /* 用temp臨時存儲*i也就是循環中a實際的值 */
*i=*j; 
*j=temp; 


 
/* 此例同樣要注意到利用指針進行數組的操作同樣改變了實際數組各元素的值 */

302 Found

302 Found


Powered by Tengine
tengine