指针参数

使用指针变量作为函数参数,可以在局部函数里改变函数外部变量的值,可以更好的模块化和封装。

例子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的影响是持久化的。

posted @ 2017-04-04 16:01  Jason207489550  阅读(349)  评论(0编辑  收藏  举报