1,传值,当把值赋给函数形参时,是赋值的副本,在函数里做的任何改变都不会影响实参的值,
eg:
void swap(int a,int b) { int temp; temp = a; a = b; b = temp;
printf("a=%d,b=%d ",a,b); }
int main(void)
{
int a = 7;
int b = 9;
swap(a,b);
printf("a=%d,b=%d
",a,b);
return 0;
}
output:
a=9
b=7
a=7
b=9
2,传引用,是在函数形参的前面加上(&)符来表示函数传递的是值的引用,可以理解为是实参的一个别名,我们知道通过&a = b来给一个变量其别名,那么别名(a)的改变也会导致原来值(b)的改变
void swap(int &a,int &b) { int temp; temp = a; a = b; b = temp; printf("a=%d,b=%d ",a,b); } int main(void) { int a = 7; int b = 9; swap(a,b); printf("a=%d,b=%d ",a,b); return 0; } output: a=9 b=7 a=9 b=7
3,传地址,就是把实参的地址传递给函数,是在函数形参的前面加上(*)符来表示函数传递的是地址,指针指向的地址一样,那么函数里改变指针的值,实参的值也会改变
void swap(int *a,int *b) { int temp; temp = a; a = b; b = temp; printf("a=%d,b=%d ",a,b); } int main(void) { int a = 7; int b = 9; swap(&a,&b); printf("a=%d,b=%d ",a,b); return 0; } output: a=9 b=7 a=9 b=7