指针参数
使用指针变量作为函数参数,可以在局部函数里改变函数外部变量的值,可以更好的模块化和封装。
例子1:
#include<stdio.h> void swap(int a,int b){ int temp; temp = a; a=b; b=temp; } int main(void) { int a=1,b=2; swap(a,b); printf("a=%d b=%d \n",a,b); return 0; }
此例子的目的是通过函数swap交换a,b的值,交换前,a=1,b=2
运行结果:
a=1 b=2
可以看到交换失败,原因是swap函数里面都是局部变量的交换,当函数执行完毕后,变量被回收,不会影响函数外部的值
例子2:
#include<stdio.h> void swap(int *a,int* b){ int temp; temp = *a; *a=*b; *b=temp; } int main(void) { int a=1,b=2; swap(&a,&b); printf("a=%d b=%d \n",a,b); return 0; }
运行结果:
a=2 b=1
将swap函数的参数修改为指针变量后,交换结果会影响a,b的值,虽然函数执行完毕后,指针变量不存在,但是在函数内部的执行对a,b的影响是持久化的。