简单应用:对指针数组中的字符串进行排序(升序);

1、交换指针变量的值;

(1)、代码如下:

#include<stdio.h>#include<string.h>voidsortByA(char**str,intcount);voidsortByA(char**str,intcount){inti;intj;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;}}}}intmain(void){char*array[]={"aaaa","bbbb","ccccc","dddd"};intcount=sizeof(array)/sizeof(array[0]);inti;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>voidsortByA(char(*p)[30],intcount);voidsortByA(char(*p)[30],intcount){inti;intj;chartmp[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);}}}}intmain(void){charmyArray[][30]={"aaaaa","bbbbb","cccc","dddddd"};inti;intcount;count=sizeof(myArray)/sizeof(myArray[0]);sortByA(myArray,count);for(i=0;i<count;i++){printf("%s",myArray[i]);}printf("\n");return0;}

(2)、运行结果:


(3)、模型分析: