首页 相关文章 在c/c++中利用数组名和指针进行排序的例子

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

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

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

/*程序作者:管宁
站点: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);...[ 查看全文 ]

2016-02-19 标签:
  • C#中数组是引用类型,C#定义整型数组方式是:int [] intArray = {1,2,3};或int [] intArray = new int;而C++中定义整型数组的方式是:int intArray[] = {1,2,3};或int * intArray = new int;C#中的数组可以是一维的也可以是多维的,同样也支持矩阵和参差不齐的数组。注意:定义多维数组(矩阵)的方式是[,,]而定义多维“参差矩阵”的方式是[][]。另外,new关键字的使用并不一定表示对象是动态分配的(进入...[ 查看全文 ]
  • 对于数组和多维数组的内容这里就不再讨论了,前面的教程有过说明,这里主要讲述的数组和指针类型的关系,通过对他们之间关系的了解可以更加深入的掌握数组和指针特性的知识! 一个整数类型数组如下进行定义 int a[]={1,2,3,4}; 如果简单写成 a;//数组的标识符名称 这将代表的是数组第一个元素的内存地址,a;就相当于&a[0],它的类型是数组元素类型的指针,在这个例子中它的类型就是i...[ 查看全文 ]
  • 先看下面的程序: 代码如下: void main() {     int a = 100;     int *ap = &a;     printf("%p\n",&a);//输出:002AF744     printf("%p\n",ap);//输出:002AF744     printf("%d\n",*ap);//输出:100     printf("%p\n",&ap);//输出:002AF738     printf("%p\n",&*ap);//输出:00...[ 查看全文 ]
  • 揭开C/C++中数组形参的迷雾 作者:乾坤一笑 楔子 去年,周星星大哥曾经在VCKBASE/C++论坛发表过一篇文章“数组引用"以避免"数组降阶”,当时我不能深入理解这种用法的含义;时隔一年,我的知识有几经锤炼,终于对此文章渐有所悟,所以把吾所知作想详细道来,竟也成了一篇文章。希望本文能对新手有所启迪,同时也希望大家发现本文中的疏漏之...[ 查看全文 ]
  • 这里的写法,可以避免使用 for 循环,减少栈空间内存的使用和减少运行时的计算开销! #include < iostream     #include < string     using   namespace  std;        void  print_char( char * array[]); //函数原形声明        void   main ( void )&nb...[ 查看全文 ]
  • 对于众多人提出的c/c++中指针难学的问题做个总结: 指针学习不好关键是概念不清造成的,说的简单点就是书没有认真看,指针的学习犹如人在学习饶口令不多看多学多练是不行的,下面是两个很经典的例子,很多书上都有,对于学习的重点在于理解*指针运算符的作用,假设定义了一个指针变量x,*x所表示的其实就是变量a本身,x表示的是变量a在内存中的地址,如果想明白可以输出观察cout *x"|"x;,当定义了int *x;...[ 查看全文 ]
  •      智能指针(smart pointer)是存储指向动态分配(堆)对象指针的类,用于生存期控制,能够确保自动正确的销毁动态分配的对象,防止内存泄露。它的一种通用实现技术是使用引用计数(reference count)。智能指针类将一个计数器与类指向的对象相关联,引用计数跟踪该类有多少个对象共享同一指针。每次创建类的新对象时,初始化指针并将引用计数置为1;当对象作为另一对象的副本而创建时,拷...[ 查看全文 ]
  • 作者:网易学院程序系教授管宁 最近在帮助其它人的学习中发现了许多问题就数组和局部变量和全居变量的两道例题进行刨析和思考! 排序操作 #include voidsort(array,n) intarray[]; intn; { inti,j,k,t; for(i=0;i) { k=i;[/LIGHT] /* 把i记录下来,以便进行调换操作 */ for(j=i+1;)j { if(array[j])/* 利用k对比j循环的元素大小是否比外部i循环当前元素的值 */ { k=j; /* 将k的值定义为j循...[ 查看全文 ]
  • 数据在内存的存放有以下几种形式 1.栈区--由编译器自动分配并且释放,该区域一般存放函数的参数值,局部变量的值等, 2.堆区--一般由程序员分配释放,如果程序员不释放,程序结束的时候才会被操作系统回收, 3.寄存器区--用来保存栈顶指针和指令指针 4.全局去--也是静态区,全局变量和静态变量都是存储在一起的,初始化的全局变量和静态变量都存储在一块,为初始化的全局变量和静态变量在相邻的另一个区...[ 查看全文 ]
  • 前言 一直没有系统去看过c++,因为懂得一些c的基本语法,在实际编程中用到c++,只能用到哪些看哪些,发现这样虽然能够完成大部分工作,但是有时候效率实在太低,比如说这节要讲的Std::sort()函数的使用,调了半天才调通。开通c/c++序列博客是记录在使用c++中一些难题,避免以后重犯错,当然以后会尽量挤出时间来较系统学习下c++。 开发环境:QtCreator2.5.1+OpenCV2.4.3 实验基础 ...[ 查看全文 ]
  • 首先是引用情形下的c++源码: 代码如下: void add(int a, int b, int&c) {     c = a + b; } int main() {     int a = 1;     int b = 2;     int c = 0;     add(a, b, c); } 下面是main对应的汇编码: 代码如下: ; 6    : int main() {     push    ebp  &...[ 查看全文 ]
  • 标签:ASP
      数组数据排序的程序例子 <% ''*** build example array to show that this thing can sort ''*** alpha-numeric arrays Dim MyArray MyArray = Array(1,5,"shawn","says","hello"2m骺噃嶤123,12,98) MyArray = Sort(MyArray) For I = 0 to Ubound(MyArray) Response.Write MyArray(I) & "<br" & vbCRLF Next Response.End '...[ 查看全文 ]
  • <C++实践系列C++中的引用(reference) 作者:张笑猛 提交者:eastvc 发布日期:2003-11-22 14:44:07 原文出处:http://objects.nease.net/ 1.简介 2.引用的语法 3.引用使用技巧     3.1 引用和多态     3.2 作为参数     3.3 作为返回值     3.4 什么时候使用引用 4. 参考资料 1.简介     引用是C++引入的新语言特...[ 查看全文 ]
  • <C++实践系列C++中的异常(exception) 作者:张笑猛 提交者:eastvc 发布日期:2003-11-22 14:40:53 原文出处:http://objects.nease.net/ 1.简介   1.1常用的错误处理方式   1.2 不常用的处理方式   1.3 异常 2. 异常的语法   2.1 try   2.2 catch   2.3 throw   2.4 函数声明 3. 异常使用技巧   3.1 异常是如何工作的     3.1.1 unwind...[ 查看全文 ]
  • /*p129*/#include class CComplex{public: CCpomplex(double r=0,double i=0) { realPart=r; imagePart=i; } void print() { cout /*p129*/#include class CComplex{public: CCpomplex(double r=0,double i=0) { realPart=r; imagePart=i; } void print() { cout[ 查看全文 ]
  • MMX指令集在C++中的使用 作者:孙原 下载本文示例源代码 上次在《关于内联汇编的几个技巧》一文中只是简单地介绍了如何在C++中使用内联汇编,这一次先对上一次的文章作一补充,然后介绍如何使用MMX指令。 一、 内联汇编的一般原则: 1、 自由使用通用寄存器;(EAX,EBX,ECX和EDX) 2、 其它寄存器利用堆栈保留,使用...[ 查看全文 ]
  • C++中的废料收集 作者:死猫 提交者:eastvc 发布日期:2003-9-20 10:01:25 原文出处:http://www.cpphelp.net/issue/gc.html Java的爱好者们经常批评C++中没有提供与Java类似的废料收集(Gabage Collector)机制(这很正常,正如C++的爱好者有时也攻击Java没有这个没有那个,或者这个不行那个不够好),导致C++中对动态存储的官吏称为程序员的噩梦,不是吗?你经常听到的是内存遗失(memory leak)和非法指...[ 查看全文 ]
  • 有了之前的基础,此文只是把一些以前没有注意到的和值得学习的知识做一个记录。 第一章 作者认为使用#if 0 .... #endif比用/*和*/好,因为后者不能嵌套。但是对于//并没有说明。 第二章 三字母词,用两个问号加一个符号表示另一个符号,比较类似于转义字符。查阅了一些资料,它的使用与编译器有关,了解即可,防止字符串常量被错误的解释。 代码如下: ??( == [ ?? == { ??...[ 查看全文 ]
  • 比如 一个函数 chat(link &a); chat(ling *a); 前者引入一个地址做形参 是不是可以把一个指针变量p。。 这么用chat(p); 那跟第二个函数 有什么区别呢 都是传地址啊。。 小弟弄不明白~~ chat(int&a); chat(int *a); 这两个函数是完全不同意义的东西,你的理解主要是在int&a和int* a这个类型上面。要注意int&和int*是两个完全不同的类型。int&是引用类型,而int*是指向int类型变量的指针类型。 voi...[ 查看全文 ]
  • <C++实践系列C++中的虚函数(virtual function) 作者:张笑猛 提交者:eastvc 发布日期:2003-11-22 14:46:56 原文出处:http://objects.nease.net/ 1.简介     虚函数是C++中用于实现多态(polymorphism)的机制。核心理念就是通过基类访问派生类定义的函数。假设我们有下面的类层次: class A { public:     virtual void foo() { cout << "A::foo() is called...[ 查看全文 ]
手机页面 收藏网站 回到头部