指针的应用——参数传递
在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、子函数中必须解引用