指针的应用——参数传递

在C语言中,实参和形参之间的数据传输是单向的,实参可以影响形参,而形参不能影响实参。指针变量作为参数也不例外,但是可以改变实参指针变量所指向的变量的值。

#include<stdio.h>

void Swap_err1(int a,int b)

{

    int tmp;

    tmp = a;

    a = b;

    b = tmp;

}

指针的应用——参数传递

void Swap_err2(int *p1,int *p2)

{

    int *tmp;//野指针,悬挂指针(没有访问权限的指针)

    tmp = p1;

    p1 = p2;

    p2 = tmp;

}

指针的应用——参数传递

void  Swap(int *p1,int *p2)//实现交换

{

    int tmp;

    tmp = *p1;

    *p1 = *p2;

    *p2  = tmp;

}

int main()//父函数

{

    int a = 10;

    int b = 20;

    printf("%d %d",a,b);

    Swap1(&a,&b);//子函数

    printf("%d %d",a,b);

    return 0;

}

重要结论:父函数调用子函数,如果子函数的改变要影响父函数,则:

1、必须传指针

2、子函数中必须解引用