在c/c++中利用数组名和指针进行排序的例子
发布时间:2006-05-05 19:01:37 来源:网易学院 网友评论 0 条以下两个例子要非常注意,函数传递的不是数组中数组元素的真实值而是数组在内存中的实际地址!
/*程序作者:管宁
站点: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; /* 定义形式参数 */
{
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++多态性的“动”与“静”
- 用Winsock实现语音全双工通信使用
- c/c++中结构体(struct)知识点强化,链表的学
- 绝对经典 C++初学者必看的50个建议
- VC++实现对远程计算机屏幕的监视
- Windows Sockets:转换字符串
- 保持C/C++程序代码的可伸缩性
- 利用VC实现图像的特殊显示效果
- C/C++中枚举类型(enum)的入门教程
- 对于c/c++中的数组排序及计算平均值和得到最
- 阅读排行
- 1.Borland 发布C++ Builder 2006 RAD 环境
- 2.C/C++程序员应聘常见面试题深入剖析
- 3.Visual C++常用数据类型转换详解
- 4.C++中的 static 关键字
- 5.利用VC++实现局域网实时视频传输
- 6.浅谈C/C++内存泄漏及其检测工具
- 7.英国投票否决C++/CLI 微软强攻ISO标准受挫
- 8.VC++下用MSComm控件实现串口通讯
- 9.伪随机数生成及在VC++中的实现
- 10.VC++编程实现对波形数据的频谱分析
- 专题教程
- Windows Server-Windows Server文档-Windows Server新闻-Windows Ser PostgreSQL-PostgreSQL文档-PostgreSQL新闻-PostgreSQL专家
- WebLogic-WebLogic文档-WebLogic新闻-WebLogic专家 FreeBSD-FreeBSD文档-FreeBSD新闻-FreeBSD专家
- Linux-内核 GUI KDE Gnome DNS FTP 安全 安装-Linux专区 Windows-AD IIS ServerCore 虚拟化 安全 HPC-Windows专区
- 大话G游 专题:手机病毒揭密
- ARP攻击防范与解决方案 路由故障处理手册
