二重指针应用

Posted bboykaku

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二重指针应用相关的知识,希望对你有一定的参考价值。

 1 //利用二重指针实现改变指针数组和数组元素之间的mapping,并没有改变原数组
 2 
 3 #include<stdio.h>
 4 int a[5];
 5 int *name[]={&a[0],&a[1],&a[2],&a[3],&a[4]};
 6 int **p;
 7 int main()
 8 {
 9     p=name;
10     void sort(int **,int);
11     void print(int**,int);
12     for(int i=0;i<sizeof(a)/sizeof(int);i++)
13         scanf("%d",*(p+i));
14     print(p,5);
15     sort(p,5);
16     print(p,5);
17     for(i=0;i<5;i++) printf("%5d",a[i]);
18     return 0;
19 }
20 
21 void sort(int **a,int n)   //没有直接对数组进行排序,而是改变了指针数组和数组之间的mapping
22 {
23     for(int i=0;i<n-1;i++)
24     {
25         int min=i;
26         for(int j=i+1;j<n;j++)
27         {
28             if(**(a+min)>**(a+j))
29             {
30                 min=j;
31             }
32         }
33         if(min!=i)
34         {
35             int *temp=*(a+i);
36             *(a+i)=*(a+min);
37             *(a+min)=temp;
38         }
39     }
40 }
41 
42 void print(int **a,int n)
43 {
44     for(int i=0;i<n;i++)
45         printf("%5d",**(a+i));
46     printf("
");
47 }

运行结果:

技术图片

 

以上是关于二重指针应用的主要内容,如果未能解决你的问题,请参考以下文章

二维数组与二重指针

指针转化(二重)

C语言指针用法详解 二重指针

C语言 二重指针深入理解

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

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