交换 int a, int b: | 交换 int *p, int *q 的地址
void ( int *a, int *b) | void( int **p, int **q)
{ | {
int temp ; | int *temp;
temp = *a; | temp = *p;
*a = *b; | *p = *q;
*b = temp; | *q = temp;
return ; | return ;
} | }
|
案例:用指向指针的指针的方法对5个字符串排序并输出(题源:C程序设计(第四版)谭浩强,清华大学出版社,第292页)。
代码:
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 5 6 void sswap( char **s, int i, int j) 7 { 8 char *temp; 9 temp = s[i]; 10 s[i] = s[j]; 11 s[j] = temp; 12 return ; 13 } 14 15 /*select sort*/ 16 void ssort(char **s, int n) 17 { 18 extern void sswap(char **s, int i, int j); 19 int i,j; 20 char *temp; 21 for(i=0;i<n;i++) 22 { 23 for(j=i;j<n;j++) 24 { 25 if(strcmp(s[i],s[j]) > 0) 26 { 27 sswap(s,i,j); 28 } 29 } 30 } 31 return; 32 } 33 34 35 /*test*/ 36 int main() 37 { 38 char **s = (char **)malloc(sizeof(char*)*5); 39 int i; 40 for(i=0;i<5;i++) 41 { 42 *(s+i) = (char*)malloc(sizeof(char)*100); 43 } 44 s[0] = "hello"; 45 s[1] = "world"; 46 s[2] = "eweli"; 47 ssort(s,3); 48 for(i=0;i<3;i++) 49 { 50 printf("%s ",s[i]); 51 } 52 return 0; 53 }