值传递
// 值传递void fun(int x){ x += 5; //修改的只是y在栈中copy x,x只是y的一个副本,在内存中重新开辟的一块临时空间把y的值 送给了x;这样也增加程序运行时间,降低了程序的效率}int main(){ int y = 0; fun(y); cout<< "y = " << y << endl; //y = 0;}
指针传递
// 指针传递void fun(int *x){ *x += 5; //修改的是指针x指向的内存单元值}int main(){ int y = 0; fun(&y); cout<<"y = "<<y<<endl; //y = 5;}
引用传递
// 引用传递void fun(int &x){ x += 5; //修改的是x引用的对象值 &x = y;}int main(){ int y = 0; //引用的实参必须初始化 fun(y); cout<<"y = "<<y<<endl; //y = 5;}
& 取地址符号
// 关于&的举例#include <bits/stdc++.h>using namespace std;char a, b, c;int main(){ a = 'a', b = 'b', c = 'c'; cout << &a << '\n'; return 0;}
// 代码1#include <iostream>using namespace std;void swap(int a, int b){ int t = a; a = b; b = t;}int main(){ int a = 1, b = 2; swap(a, b); cout << a << ' ' << b << '\n'; return 0;}/*1 2*/
// 代码2#include <iostream>using namespace std;void swap(int &a, int &b){ int t = a; a = b; b = t;}int main(){ int a = 1, b = 2; swap(a, b); cout << a << ' ' << b << '\n'; return 0;}/*2 1*/
#include <bits/stdc++.h>using namespace std;void f(char *a, char *b){ a = b; (*a)++;}int main(){ char c1, c2; char *p1, *p2; c1 = 'A', c2 = 'a'; p1 = &c1, p2 = &c2; f(p1, p2); cout << c1 << ' ' << c2 << '\n'; return 0;}