指针数组的应用
Posted hzb1224
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了指针数组的应用相关的知识,希望对你有一定的参考价值。
在实现排序功能的时候,一般都是通过交换值的形式,通过循环逐渐得到我们想要的顺序。但是有时候排序通过值的交换实现起来比较麻烦,因此我们可以引用指针数组,通过交换地址的方式来得到我们想要的顺序。
例: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);
总结:通过指针数组交换内存地址实现排序,解决一些交换数值比较麻烦的问题
以上是关于指针数组的应用的主要内容,如果未能解决你的问题,请参考以下文章