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;}}/* 此例同样要注意到利用指针进行数组的操作同样改变了实际数组各元素的值 */

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索指针
, 数组
, 函数
, 排序
, 例子
, 数组排序实例
void
指针数组排序、用指针给数组排序、c语言指针数组排序、c 指针数组排序、利用指针输出数组,以便于您获取更多的相关知识。

时间: 2024-09-02 04:15:11

C/C++中利用数组名/指针进行排序实例的相关文章

asp中利用数组实现数据库记录的批量录入方法

数据|数据库|数组 asp中利用数组实现数据库记录的批量录入方法(原创) 演示:http://www.zwtd.com/1/yanek/n/needdj2.asp <% rem 文章题目 asp中利用数组实现数据库记录的批量录入方法(原创)作者:yanek联系email:aspboy@263.net%> 包括两个文件 1.allneeddj.asp:实现表单的生成 2. allneeddjresult.asp 处理表单批量录入 3.hbedu.mdb :数据库文件 其数据库结构如下 provi

asp中利用数组实现数据库记录的批量录入方法(原创),有演示,建议入精华

精华|数据|数据库|数组|原创 asp中利用数组实现数据库记录的批量录入方法(原创)演示:http://www.zwtd.com/1/yanek/n/needdj2.asp<%rem 文章题目 asp中利用数组实现数据库记录的批量录入方法(原创)作者:yanek联系email:aspboy@263.net%> 包括两个文件1.allneeddj.asp:实现表单的生成2. allneeddjresult.asp 处理表单批量录入3.hbedu.mdb :数据库文件其数据库结构如下provinc

C语言中的数组和指针汇编代码分析实例

  这篇文章主要介绍了C语言中的数组和指针汇编代码分析实例,本文用一则C语言例子来得到对应的汇编代码,并一一注解每句汇编代码的含义,需要的朋友可以参考下 今天看<程序员面试宝典>时偶然看到讲数组和指针的存取效率,闲着无聊,就自己写了段小代码,简单分析一下C语言背后的汇编,可能很多人只注重C语言,但在实际应用当中,当出现问题时,有时候还是通过分析汇编代码能够解决问题.本文只是为初学者,大牛可以飘过~ C源代码如下: 代码如下: #include "stdafx.h" int

C语言中的数组和指针汇编代码分析实例_C 语言

今天看<程序员面试宝典>时偶然看到讲数组和指针的存取效率,闲着无聊,就自己写了段小代码,简单分析一下C语言背后的汇编,可能很多人只注重C语言,但在实际应用当中,当出现问题时,有时候还是通过分析汇编代码能够解决问题.本文只是为初学者,大牛可以飘过~ C源代码如下: 复制代码 代码如下: #include "stdafx.h" int main(int argc, char* argv[]) {        char a=1;        char c[] = "

C++中一维数组与指针的关系详细总结_C 语言

对于数组int a[10];a表示数组的第一个元素的地址,即&a[0]; 如果使指针p,指向数组的首元素,可以进行操作:int * p=a;或者int *p=&a[0]; 那么p++,是指向数组中的先一个元素,即a[1];此时*p则是a[1]中所放的值.此时,a[i]=p[i]=*(a+i)=*(p+i) 下面举一个例子:直接用a[i]来输出 复制代码 代码如下: #include<iostream>using namespace std;int main(){ int a[1

javascript中利用数组实现的循环队列代码_javascript技巧

//循环队列 function CircleQueue(size){ this.initQueue(size); } CircleQueue.prototype = { //初始化队列 initQueue : function(size){ this.size = size; this.list = new Array(); this.capacity = size + 1; this.head = 0; this.tail = 0; }, //压入队列 enterQueue : functio

MySQL中利用索引对数据进行排序的基础教程_Mysql

MySQL中,有两种方式生成有序结果集:一是使用filesort,二是按索引顺序扫描.利用索引进行排序操作是非常快的,而且可以利用同一索引同时进行查找和排序操作.当索引的顺序与ORDER BY中的列顺序相同且所有的列是同一方向(全部升序或者全部降序)时,可以使用索引来排序.如果查询是连接多个表,仅当ORDER BY中的所有列都是第一个表的列时才会使用索引.其它情况都会使用filesort. MySQL索引通常是被用于提高WHERE条件的数据行匹配或者执行联结操作时匹配其它表的数据行的搜索速度.

利用数组进行冒泡法排序举例

排序|数组 语法:VB .net环境:.NetFrameword1.1 Dim i, j, k As Integer        Dim tmp As Integer        Dim sr(20) As String        Dim rr(20) As String         sr(1) = 2        sr(2) = 11        sr(3) = 1        sr(4) = 4        sr(5) = 3        sr(6) = 12     

JAVA中,数组的操作与排序

自己写了正向反向的冒泡排序,还用了静态和NEW方法实现. import java.util.Arrays; public class HelloJava { public static void main(String[] args) { // TODO Auto-generated method stub int a[][] = new int[3][4]; for (int i = 0; i < a.length; i++){ for (int j = 0; j < a[i].length