标签: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