国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

在c/c++中利用數組名和指針進行排序的例子

2019-11-17 05:12:17
字體:
來源:轉載
供稿:網友
作者:網易學院程序系教授管寧以下兩個例子要非常注重,函數傳遞的不是數組中數組元素的真實值而是數組在內存中的實際地址!
/*程序作者:管寧
站點:www.cndev-lab.com
所有稿件均有版權,如要轉載,請務必聞名出處和作者*/

#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("/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]的實際值也就發生了改變 */
/*程序作者:管寧
站點:www.cndev-lab.com
所有稿件均有版權,如要轉載,請務必聞名出處和作者*/

#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用與交換的時候臨時存儲數據的 */
i = x; /* 利用指針變量i存儲數組a的起始地址 */
p = x + ((n-1)/2); /* 計算最后一次循環的時候數組a的地址 */
j = x + n - 1; /* 計算數組a也就是a[9]的結束地址好用于交換 */
for (;i<=p;i++,j--) /* 利用循環和指針進行數組元素值的交換 */
{
temp=*i; /* 用temp臨時存儲*i也就是循環中a實際的值 */
*i=*j;
*j=temp;
}
}

/* 此例同樣要注重到利用指針進行數組的操作同樣改變了實際數組各元素的值 */
更多文章 更多內容請看C/C++技術專題專題,或

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 正镶白旗| 望谟县| 内江市| 英德市| 黑龙江省| 郓城县| 柞水县| 阿克陶县| 通辽市| 宽甸| 阳高县| 惠来县| 仲巴县| 远安县| 江陵县| 那坡县| 巫溪县| 奇台县| 浮山县| 广河县| 甘孜| 松桃| 陆河县| 佛山市| 瓦房店市| 宿松县| 北辰区| 晋宁县| 韶关市| 娄烦县| 兰溪市| 平塘县| 河间市| 沙洋县| 临西县| 滁州市| 大同县| 江安县| 卢氏县| 平和县| 通渭县|