日期:2011-03-22 13:55:00 来源:本站整理
<b>C/C++中操纵数组名/指针举行排序实例</b>[VC/C++编程]
本文“<b>C/C++中操纵数组名/指针举行排序实例</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
在c/c++中操纵数组名作为函数参数传送排序和用指针举行排序的例子.
以下两个例子要非常注意,函数传送的不是数组中数组元素的真实值而是数组在内存中的实际地址.
#include<stdio.h>
voidmain(void)
{
voidreversal();
staticinta[10]={0,1,2,3,4,5,6,7,8,9};/*成立一个数组并初始化*/
inti;
for(i=0;i<10;i++)
{
printf("%d",a);
}
printf("
");
reversal(a,10);/*调用自定义涵数举行反向显示排序,并把数组a的起始地址传送给情势参数x*/
for(i=0;i<10;i++)
{
printf("%d",a);
}
printf("
");
}
voidreversal(x,n)
intx[],n;/*定义情势参数*/
{
intm=(n-1)/2;/*计算10个数需求循环几次,因为是两两改换第一个数组是x[0]故应当是int(9/2)*/
inttemp,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>
voidmain(void)
{
voidreversal();
staticinta[10]={0,1,2,3,4,5,6,7,8,9};/*成立一个数组并初始化*/
inti;
for(i=0;i<10;i++)
{
printf("%d",a);
}
printf("
");
reversal(a,10);/*调用自定义涵数举行反向显示排序,并把数组a的起始地址传送给情势参数x*/
for(i=0;i<10;i++)
{
printf("%d",a);
}
printf("
");
}
voidreversal(x,n)
int*x,n;/*定义x为指针变量*/
{
inttemp,*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;
}
}
/*此例一样要注意到操纵指针举行数组的操作一样改变了实际数组各元素的值*/
以上是“<b>C/C++中操纵数组名/指针举行排序实例</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论