1.值传递
void swap(int x,int y) { int temp = x; x = y; y = temp; } void main() { int a = 10, b = 20; swap(a, b); }
执行后,并不会交换。
2.引用传递
void swap(int &x,int &y) { int temp = x; x = y; y = temp; } void main() { int a = 10, b = 20; swap(a, b); printf("a=%d b=%d ", a, b); }
执行后,发生交换。
3.指针传递
void swap(int *x,int *y) { int temp = *x; *x = *y; *y = temp; } void main() { int a = 10, b = 20; swap(&a, &b); printf("a=%d b=%d ", a, b); }
执行后,发生交换。
4.数组做参数,传的到底是什么?
参数传递只有上面三种,但是如果加上数组,就会产生几种新形式。
首先,明确数组型变量名本身只是该数组所占存储空间的首地址:
int a[3] = { 1, 2, 3 }; int *p = a; //等价于下行 //int *p = &a[0]; printf("%d", *p);
》》》典型的数组做参数
void fun(char s[]){ for (int i = 0; s[i] != '