题目
本题是谭浩强《C程序设计课后习题》题8.20。
题目:
20. 用指向指针的指针的方法对5个字符串排序并输出。
以下是本篇文章正文内容,欢迎朋友们进行指正,一起探讨,共同进步。——来自考研路上的lwj
一、解题思路
思路:
指向指针的指针其实就是二级指针,使用二级指针的保存一级指针的地址,让这个一级指针
指向具体的数据空间; 定义一个字符串指针数组包含5个元素,每个元素可以保存一个字符串的首地址,而这个地址指向的是具体的字符串数据空间,通过指针访问实现对指向空间内的字符串进行比较排序交换即可。
二、代码部分
1.引入库
代码如下(示例):
#include<stdio.h>
2.主函数部分
代码如下(示例):
int main()
{
char* a[5] = { "a","c","b","e","d" };
char** p = a;
int i, j;
for (i = 0; i < 5; i++)
printf("%s ", *(p + i));
printf("\n");
for(i=0;i<5;i++)
for (j = i + 1; j < 5; j++)
{
if (strcmp(*(p + i), *(p + j)) > 0)//按从小到大排序,冒泡排序算法。
{
char* tmp = *(p + i);
*(p + i) = *(p + j);
*(p + j) = tmp;//只更改指针的指向,不改变原有数据。
}
}
for (i = 0; i < 5; i++)
printf("%s ", *(p + i));
printf("\n");
return 0;
}
三、执行结果
输出:
a c b e d
a b c d e