二重指针实现排序

 1 //双指针对十个数排序
 2
 3 #include <stdio.h>
 4 #include <stdlib.h>
 5 #define N 8
 6 //2017.3.5
 7 int main()
 8 {
 9     //初始化数组 赋值N个数 用指针数组指向
10     int num[N];
11     int *pNum[N];
12     int **p = NULL;
13     for (int i = 0; i < N; i++)
14     {
15         num[i] = rand() % 100;//产生随机数
16         printf("%d\t", num[i]);
17         pNum[i] = &num[i];//这里方便二维指针
18     }
19     printf("\n");
20     p = pNum;
21     for (int i = 0; i < N; i++)
22     {
23         for (int j = i + 1; j < N; j++)
24         {
25             if (**(p + i) >= **(p + j))
26             {
27                 int temp = **(p + i);
28                 **(p + i) = **(p + j);
29                 **(p + j) = temp;
30             }
31         }
32     }
33     //打印结果
34     for (int i = 0; i < N; i++)
35     {
36         printf("%d\t", **(p + i));
37     }
38     getchar();
39     return 1;
40 }

时间: 2024-12-30 12:08:09

二重指针实现排序的相关文章

C语言 二重指针深入理解

k->[sss] ------>k是指针,指向内存区,内存区存的数据是sss   ,那么,*K的内容就是sss           (*k)<==>sss sss->[hhh]---->sss是新的地址,是指针,指向内存区域,内存区域的数据是hhh,那么,*sss的内容就是hhh     (*sss)<==>hhh 综上所述,二重指针(*(*k))=====>就等于hhh 也就是取k地址的内容作为一个新的地址,然后再取这个新的地址的内容 2.思考链表

一重指针和二重指针

今天从函数传参的角度来理解指针.如果想交换两个变量a,b的值,我们会这么做: int temp; temp = a; a = b; b = a; 如果要把以上功能封装成一个函数,最开始的反应是: func(int a,int b) { int temp; temp = a; a = b; b = a; } 但是func(a,b);这个函数执行完之后,a和b的值并没有交换.变换的只是函数内部的临时变量.以上这种方式无法改为函数外部的变量——a和b. 那么在函数的内部如何改变外部的变量呢,答案是指针

数组指针和指针数组和二重指针

数组指针和指针数组从字面上来看很纠结,有时候我也搞不清,分不清哪样的是数组指针,哪样的是指针数组.这东西就不是靠记忆的,我们采取分析加对比分层剥离的方法分析. 1.概念区别 1.1.数组指针:定语在前,主语在后.也就是数组的指针.一个指针,它指向一个数组. 1.2.指针数组:定语在前,主语在后.也就是指针 的数组.一个数组,里面的元素都是指针. 2.指针和数组分别定义的符号 2.1 int * p; 分析: 第一步:找核心,核心是p. 第二步:逐层剥离,p和*结合是指针.所以int*p;是定义了

C基础--二重指针和数组指针

#include <stdio.h> int main1(void) { int a = 3; int b = 8; int *p = &a; // int* p = &a; int **q; // int** q; q = &p; **q = 10; *q = &b; **q = 5; p = &b; *p = 9; printf("a = %d\tb = %d\n", a, b); return 0; } //void fun(c

C语言二重指针与malloc

(内容主要源于网上,只是加入了些自己的剖析) 假设有一个二重指针: char **p; 同时有一个指针数组 char *name[4]; 如何引用p呢? 首先我们有程序代码如下 #include <stdio.h> int main() { char *s = "I love you"; char *s1 = "you love me"; char *s2 = "she love you"; char *s3 = "he l

【转】vector中对象指针的排序

原文:http://blog.csdn.net/tanlijun37/article/details/1948493 vector中对象指针的排序,初步想法是1: 把对象指针存到vector,重载bool operator(对象指针)2:用sort来排序例:class A{public:  bool operator(const A* temp)  {     return this->a < temp->a;  }  A(int a)  {    this->a = a;  } 

指针数组,数组指针,函数指针,main函数实质,二重指针,函数指针作为参数,泛型函数

 1.指针数组 数组里面的每个元素都是指针. 指针数组的案例如下: 易犯错误: 2.数组指针 归根结底还是指针,只是取*的时候能够取出一整个数组出来. 数组指针:(一个指针指向了数组,一般和二维数组搭配使用). 下面的(p+1)表示的是加过20个字符. 3.函数指针: 在gcc编译的时候增加一些调试信息的方式是: gcc demo.c –g –o app   -g表示增加一些调试信息 objdump –dSsx app > file   将app反汇编,然后重定向到file文件中.函数指针定

指针做参数的动态内存分配与二重指针(上)

C中的动态内存分配问题: 格式:Int *pointer; Pointer = (int *)malloc(100 * sizeof(int)); 可以在被调用函数(该函数返回指针的函数)中动态分配内存,(并且该内存是分配在堆内存中的,故而被调函数可以返回指向该堆内存的指针),然后返回该指针值,该指针指向动态分配的内存,然后可以在主函数中free掉pointer.哪怕在主函数中将该指针值赋值给pointer_2,free掉pointer_2也是可以的,(可以理解的,它们都指向该堆内存),以避免出

指针做参数的动态内存分配与二重指针(下)

要实现指针作为函数形参,改变实参指针的值.一般有两种做法: 使用双指针,或者指针数组形式作为形参,将实参的地址传入函数,也即要给形参传入指针的地址! http://blog.csdn.net/liuyajun2013/article/details/17151309#0-tsina-1-79483-397232819ff9a47a7b7e80a40613cfe http://www.cnblogs.com/heat-man/p/4646051.html http://www.jb51.net/a