学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,用指针互换可以完成互换功能。运行结果:
前两个自定义函数都不能完成互换,只有最后个能完成互换功能。

浙公网安备 33010602011771号