码迷,mamicode.com
首页 > 编程语言 > 详细

指针数组的应用

时间:2019-08-07 22:43:31      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:return   输入输出   指针数组   china   str   内存   sof   mic   交换   

在实现排序功能的时候,一般都是通过交换值的形式,通过循环逐渐得到我们想要的顺序。但是有时候排序通过值的交换实现起来比较麻烦,因此我们可以引用指针数组,通过交换地址的方式来得到我们想要的顺序。

例:char a[4][10]={"CHINA","china","ABC","abcdef"}  将四个字符串通过从小到大的顺序依次排序,如果用交换值的形式,实现起来就会比较麻烦。但是通过指针数组实现起来就很容易。

      char  *b[4]={a[0],a[1],a[2],a[3]}   定义一个指针数组分别依次指向字符数组,如下图所示

  技术图片

 通过交换指针地址来实现从小到大的排序,指针数组b[0],指向的是最小字符串,b[3]指向最大字符串,如图所示:

 技术图片

 具体代码实现:C++为例

#include<iostream>   //调用cin,cout  输入输出函数

#include<stdlib.h>   //调用strcmp函数来比较字符串大小

using namespace std;  

int main()

{

     char a[4][10]={"CHINA","china","ABC","abcdef"};  //定义二维数组

     char *b[4]={a[0],a[1],a[2],a[3]};   //定义指针数组用来存放二维数组对应的内存地址

     char *temp; //定义交换两个地址的中间变量指针;

     int i,j;      //通过冒泡法实现地址交换

    for(i=0;i<=2;i++)

    {

        for(j=0;j<=2-i;j++)

         {

             if(strcmp(b[j],b[j+1])>0)    //判断指针指向的字符串的大小,如果前一个大于后一个,则交换彼此的内存地址

                {

                    temp=b[j];         //这里的三行交换的是内存地址,而不是值

                    b[j]=b[j+1];

                    b[j+1]=temp;

               }

        }

   }

  for(i=0;i<=3;i++)

    cout<<b[i]<<",";

  return(0);

}

 

总结:通过指针数组交换内存地址实现排序,解决一些交换数值比较麻烦的问题

 

指针数组的应用

标签:return   输入输出   指针数组   china   str   内存   sof   mic   交换   

原文地址:https://www.cnblogs.com/hzb1224/p/11317514.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!