一、实参与形参都不是指针,通过修改形参的值来改变实参的值
结果:不可以改变实参的值
#includeint swap(int a,int b) { int temp; temp = a; a = b; b = temp; return 0; } int main() { int a=2, b=4; printf("%dt%dn", a, b); swap(a, b); printf("%dt%dn", a, b); return 0; } 输出: 2 4 2 4
二、实参与形参都是指针,通过修改形参指针指向的值改变实参
特点:可以改变实参的值
#includeint swap(int *a,int *b) { int temp; temp = *a; *a = *b; *b = temp; return 0; } int main() { int a=2, b=4,*p1,*p2; p1 = &a; p2 = &b; printf("%dt%dn", a, b); swap(p1, p2); printf("%dt%dn", a, b); return 0; } 输出: 2 4 4 2
三、实参与形参都是指针,通过修改形参指针变量的地址改变实参
特点:不可以改变实参的值
#includeint swap(int *a,int *b) { int *temp; temp = a; a = b; b = temp; return 0; } int main() { int a=2, b=4,*p1,*p2; p1 = &a; p2 = &b; printf("%dt%dn", a, b); swap(p1, p2); printf("%dt%dn", a, b); printf("%dt%dn", *p1, *p2); return 0; } 输出: 2 4 2 4 2 4



