国产探花免费观看_亚洲丰满少妇自慰呻吟_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++技術專題專題,或

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 富平县| 毕节市| 福贡县| 松滋市| 房山区| 宁海县| 鸡西市| 温泉县| 西林县| 米泉市| 股票| 普陀区| 涟源市| 界首市| 肇庆市| 湖北省| 伊川县| 蚌埠市| 黄龙县| 新津县| 南靖县| 绩溪县| 邛崃市| 杂多县| 涿鹿县| 黄冈市| 洛南县| 理塘县| 黑龙江省| 高唐县| 玛沁县| 三亚市| 乐安县| 龙南县| 奇台县| 五莲县| 洱源县| 兰州市| 兰州市| 鄯善县| 长治市|