学C语言_指针_2_经典指针程序_互换两个数字
1: # include <stdio.h>
2:
3: void Fairyd_1(int , int ); //定义函数Fairyd_1,形参可以不注明变量,直接定义类型即可。
4: void Fairyd_2(int *, int *); //定义函数Fiaryd_2,该函数形参的变量为整型指针。
5: void Fairyd_3(int *, int *); //定义函数Fiaryd_3,该函数形参的变量为整型指针。
6:
7: int main(void)
8: {
9: int a = 3;
10: int b = 5;
11:
12: Fairyd_1(a, b);
13: printf("a = %d, b = %d\n", a, b);
14:
15: Fairyd_2(&a, &b); //取a和b的变量地址,要加上&(取地址符)符号。
16: printf("a = %d, b = %d\n", a, b);
17:
18: Fairyd_3(&a, &b);
19: printf("a = %d, b = %d\n", a, b);
20:
21: return 0;
22: }
23:
24: void Fairyd_1(int a, int b)
25: {
26: int t;
27:
28: t = a;
29: a = b;
30: b = t;
31:
32: return 0;
33: }//定义函数Fairyd_1,不能完成互换功能。因为局部变量只能在本函数内有效。
34:
35: void Fairyd_2(int * p, int * q)
36: {
37: int * t;//将t也定义为int *类型,这样才能与p和q类型一致。
38:
39: t = p;
40: p = q;
41: q = t;
42: }
43:
44: void Fairyd_3(int * p, int * q)
45: {
46: int t;//将t定义为int类型,这样与*p和*q才是同一类型。
47:
48: t = *p; //*p代表指针p指向的对象。
49: *p = *q;
50: *q = t;
51: }//定义函数Fairyd_3,用指针互换可以完成互换功能。
运行结果:
前两个自定义函数都不能完成互换,只有最后个能完成互换功能。