经典指针程序,互换两个数字
1 # include <stdio.h>
2 void huhuan_1(int , int );
3 void huhuan_2(int *, int*);
4 void huhuan_3(int *, int *);
5
6
7 int main(void)
8 {
9 int a = 3;
10 int b = 5;
11
12 huhuan_1(a, b);
13 printf("a = %d, b = %d\n",a, b);
14
15 huhuan_2(&a, &b); //写成huhuan(*p, *q);或者huhuan(a, b);都是错误的
16 printf("a = %d, b = %d\n",a, b);
17
18 huhuan_3(&a, &b);
19 printf("a = %d, b = %d\n",a, b);
20
21 return 0;
22 }
23 void huhuan_1(int a, int b)
24 {
25 int t;
26
27 t = a;
28 a = b;
29 b = t;
30 }
31 void huhuan_2(int * p, int * q)
32 {
33 int * t; //如果要互换p和q的值,则不能写成int t;
34
35 t = p;
36 p = q;
37 q = t;
38
39 } //该函数只是互换了形参,互换的是地址值。
40 void huhuan_3(int * p, int * q)
41 {
42 int t; //如果要互换*p和*q的值,则t必须定义成int,不能定义成int *。
43
44 t = *p; // p是int * ,*p是int
45 *p = *q;
46 *q = t;
47
48 } //可以完成互换的功能
2 void huhuan_1(int , int );
3 void huhuan_2(int *, int*);
4 void huhuan_3(int *, int *);
5
6
7 int main(void)
8 {
9 int a = 3;
10 int b = 5;
11
12 huhuan_1(a, b);
13 printf("a = %d, b = %d\n",a, b);
14
15 huhuan_2(&a, &b); //写成huhuan(*p, *q);或者huhuan(a, b);都是错误的
16 printf("a = %d, b = %d\n",a, b);
17
18 huhuan_3(&a, &b);
19 printf("a = %d, b = %d\n",a, b);
20
21 return 0;
22 }
23 void huhuan_1(int a, int b)
24 {
25 int t;
26
27 t = a;
28 a = b;
29 b = t;
30 }
31 void huhuan_2(int * p, int * q)
32 {
33 int * t; //如果要互换p和q的值,则不能写成int t;
34
35 t = p;
36 p = q;
37 q = t;
38
39 } //该函数只是互换了形参,互换的是地址值。
40 void huhuan_3(int * p, int * q)
41 {
42 int t; //如果要互换*p和*q的值,则t必须定义成int,不能定义成int *。
43
44 t = *p; // p是int * ,*p是int
45 *p = *q;
46 *q = t;
47
48 } //可以完成互换的功能