在c/c++中利用数组名和指针进行排序的例子

七仙女下凡7

七仙女下凡7

2016-02-19 12:22

下面,图老师小编带您去了解一下在c/c++中利用数组名和指针进行排序的例子,生活就是不断的发现新事物,get新技能~

作者:网易学院程序系教授管宁

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

以下两个例子要非常注意,函数传递的不是数组中数组元素的真实值而是数组在内存中的实际地址!

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)/*程序作者:管宁
站点: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;i10;i++)
{
printf("%d ",a);
}
printf("");
reversal(a,10); /* 调用自定义涵数进行反向显示排序,并把数组a的起始地址传送给形式参数x */

for (i=0;i10;i++)
{
printf("%d ",a);
}
printf("");

}

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;i10;i++)
{
printf("%d ",a);
}
printf("");
reversal(a,10); /* 调用自定义涵数进行反向显示排序,并把数组a的起始地址传送给形式参数x */

for (i=0;i10;i++)
{
printf("%d ",a);
}
printf("");

}

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;
}
}

/* 此例同样要注意到利用指针进行数组的操作同样改变了实际数组各元素的值 */
展开更多 50%)
分享

猜你喜欢

在c/c++中利用数组名和指针进行排序的例子

编程语言 网络编程
在c/c++中利用数组名和指针进行排序的例子

C/C++中利用数组名/指针进行排序实例

编程语言 网络编程
C/C++中利用数组名/指针进行排序实例

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

c/c++中的字符指针数组,指向指针的指针的含义

编程语言 网络编程
c/c++中的字符指针数组,指向指针的指针的含义

C/C++中字符指针数组及指向指针的指针的含义

编程语言 网络编程
C/C++中字符指针数组及指向指针的指针的含义

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

C++中函数指针数组的使用

编程语言 网络编程
C++中函数指针数组的使用

新手入门:C/C++中数组和指针类型的关系

编程语言 网络编程
新手入门:C/C++中数组和指针类型的关系

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

JS代码混淆初步

JS代码混淆初步

对前面对于引用的c++入门教程的补充说明

对前面对于引用的c++入门教程的补充说明
下拉加载更多内容 ↓