简单应用:对指针数组中的字符串进行排序(升序);
1、交换指针变量的值;
(1)、代码如下:
#include<stdio.h>
#include<string.h>
void sortByA(char **str, int count);
void sortByA(char **str, int count){
int i;
int j;
char *tmp;
for(i = 0; i < count; i++){
for(j = i+1; j < count; j++){
if((strcmp(*(str+i), *(str+j))) > 0){ //交换的是指针变量;
tmp = *(str+i);
*(str+i) = *(str+j);
*(str+j) = tmp;
}
}
}
}
int main(void){
char *array[] = {"aaaa", "bbbb", "ccccc", "dddd"};
int count = sizeof(array)/sizeof(array[0]);
int i;
sortByA(array, count);
for(i = 0; i < count; i++){
printf("%s ", array[i]);
}
printf("\n");
}
(2)、运行结果:
(3)、模型分析:
指针变量的交换:中间借助一个临时的指针变量即可;
2、交换空间的值
(1)、代码如下:
#include<stdio.h>
#include<string.h>
void sortByA(char (*p)[30], int count);
void sortByA(char (*p)[30], int count){
int i;
int j;
char tmp[30];
for(i = 0; i < count; i++){
for(j = i+1; j < count; j++){
if((strcmp(p[i], p[j]) > 0)){
strcpy(tmp, p[i]); //内存块的拷贝
strcpy(p[i], p[j]);
strcpy(p[j], tmp);
}
}
}
}
int main(void){
char myArray[][30] = {"aaaaa", "bbbbb", "cccc", "dddddd"};
int i;
int count;
count = sizeof(myArray)/sizeof(myArray[0]);
sortByA(myArray, count);
for(i = 0; i < count; i++){
printf("%s ", myArray[i]);
}
printf("\n");
return 0;
}
(2)、运行结果:
(3)、模型分析:
转载于:https://blog.51cto.com/wait0804/1874769