【C】交换值

交换 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\n",s[i]);
51     }
52     return 0;
53 }

 

posted @ 2015-03-15 16:00  永久指针  阅读(333)  评论(0编辑  收藏  举报