C/C++中操作数组名/指针举办排序实例
当前位置:以往代写 > C/C++ 教程 >C/C++中操作数组名/指针举办排序实例
2019-06-13

C/C++中操作数组名/指针举办排序实例

C/C++中操作数组名/指针举办排序实例

在c/c++中操作数组名作为函数参数通报排序和用指针举办排序的例子。

以下两个例子要很是留意,函数通报的不是数组中数组元素的真实值而是数组在内存中的实际地点。

#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]的实际值也就产生了改变 */

#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;
}
}
/* 此例同样要留意到操作指针举办数组的操纵同样改变了实际数组各元素的值 */

    关键字:

在线提交作业