●值传递,试图交换两个变量
void exchange(int a, int b)
{
int temp = a;
a = b;
b = temp;
}
int main()
{
int a = 1, b = 2;
exchange(a, b);
printf("%d %d", a, b);
return 0;
}
如果不用指针做形参或者引用型变量做形参,程序在调用子函数时会为a,b重新开辟
内存,并将实参的值复制到a,b中去,然后在exchange函数中,a,b确实发生交换了,
但这跟主函数中的a,b毫无关系,主函数中a,b并未发生改变。子函数调用结束后,
形参所占内存自动释放。
引用型变量和指针其实是将主函数中变量的地址传递给了子函数,这样子函数
直接去操作主函数中的变量,并不会再为形参开辟内存。
由打印结果看出:交换失败
●通过指针(传址)交换两个变量的内容
传地址,通过指针进行操作,可实现对变量内容的改变
void exchange(int *a,int *b)
{
int temp = *a;
*a = *b;
*b = temp;
}
int main()
{
int a=1;
int b=2;
exchange(&a,&b);
printf("%d %d",a,b);
return 0;
}