题目
- 给一组字符串{"lele","lili","lilei","hanmeimei","hanmeiemi"}排序,要求不改变字符数组的内容,即采用索引式排序。
思想
- 二级指针的偏移场景
代码
#include <stdio.h> #include <stdlib.h> #include <string.h> void print(char **p) { int i; for(i=0;i<5;i++) { puts(p[i]); } } void print_two(char (*p)[10]) { int i; for(i=0;i<5;i++) { puts(p[i]); } } int main() { char **p; char *tmp; int i,j; char b[5][10]={"lele","lili","lilei","hanmeimei","zhousi"}; p=(char**)malloc(sizeof(char*)*5);//2012版本,申请内存空间必须放在定义语句的后面 for(i=0;i<5;i++) { p[i]=b[i]; } for(i=4;i>0;i--)//冒泡排序法 { for(j=0;j<i;j++) { if(strcmp(p[j],p[j+1]) > 0) { tmp=p[j+1]; p[j+1]=p[j]; p[j]=tmp; } } } printf("排序后:\n"); print(p);//打印二级指针所指向的内存空间的指针 puts("**************************"); printf("排序前:\n"); print_two(b);//打印二维数组 system("pause"); }
执行结果