C++程序实现字符串排序

需积分: 0 0 下载量 143 浏览量 更新于2024-11-29 收藏 51KB DOC 举报
"Visual C++编程实践,涉及指针、动态内存分配和字符串操作,主要包含两个函数:input() 和 sort(),以及主函数main()。示例代码讲解了如何使用二级指针处理字符串数组,并实现字符串的输入与升序排序。" 在 Visual C++ 编程中,指针是一种强大的工具,它允许我们动态地分配和管理内存,以及高效地处理数据结构。在这个例子中,我们看到如何使用二级指针来操作字符串数组。以下是相关知识点的详细解释: 1. **二级指针**: 二级指针(`char **p`)实际上是指向指针的指针,它能够用来存储一个指针数组的地址。在本例中,`p` 指向一个字符串指针数组,这个数组可以存储多个字符串的首地址。 2. **动态内存分配**: 使用 `new` 运算符动态分配内存是C++中常见的做法。在 `input()` 函数中,每读取一个字符串,都会用 `strlen(s) + 1` 计算字符串长度并加上1(用于存储字符串结束符`\0`),然后为该字符串申请新的内存空间。如果申请失败,程序会输出错误信息并退出。 3. **字符串拷贝**: `strcpy()` 函数用于将一个字符串复制到另一个位置。在这里,它将用户输入的字符串 `s` 复制到新分配的内存空间,由 `p[i]` 指向。 4. **选择法排序**: `sort()` 函数实现了选择法排序,这是一种简单的排序算法。它通过比较相邻的元素并交换位置,逐步将最小的元素放到前面,从而实现升序排序。在这个例子中,使用 `strcmp()` 函数比较两个字符串的大小。 5. **主函数 `main()`**: 在 `main()` 中,首先提示用户输入字符串个数,然后分配相应长度的指针数组,并调用 `input()` 和 `sort()` 函数。最后,使用一个循环打印排序后的字符串。 6. **错误处理**: 当内存分配失败时,程序通过 `exit()` 函数退出,同时输出错误信息。这有助于避免因内存问题导致的未定义行为。 通过这个例子,我们可以学习到如何在C++中有效地处理字符串,包括动态内存分配、字符串拷贝和排序等操作。同时,也了解了指针数组和二级指针的应用场景。这些基础知识对于理解和编写更复杂的C++程序至关重要。