值传递和地址传递
值传递和地址传递
指针的优势体现在函数上,如果只是普通的值传递,那么变量的值将不会改变。而地址传递,可以通过操作指针直接访问地址去改变变量。
#include <stdio.h>
void swap1(int m, int n);
void swap2(int *m, int *n);
int main(int argc, char const *argv[])
{
int a = 11;
int b = 22;
swap1(a, b);//值传递,通过函数交换两个值,形参的修改不会影响到实参
printf("a = %d, b = %d\n", a, b);
//地址传递,不管这个变量什么类型,只要是变量本身传递,就是值传递
swap2(&a, &b);
printf("a = %d, b = %d\n", a, b);
return 0;
}
void swap1(int m, int n)
{
int tmp;
tmp = m;
m = n;
n = tmp;
printf("m = %d, n = %d\n", m, n);
}
void swap2(int *m, int *n)
{
int tmp;
tmp = *m;
*m = *n;
*n = tmp;
}
值传递
地址传递