关于传参总是搞晕,这里总结下:
值传递:
void func(int n) { } void main() { int x = 1; func(x); return; }
这种就是值传递,在func函数里,对参数n进行赋值操作,main函数的x始终是1。
指针传递:
我理解的指针传递有两种场景:
1)修改指针指向的内容,举例:
class A
{
public:
A();
~A();
public:
int k;
}
void func(A* p) { P->K = 6; } void main() { A*p = new A; p->k = 5; func(p); return; }
这种情况不会修改实参所指向的内容,就是调用完func函数,main函数的p指针的k值变成了6。因为这是修改指针指向的内容的值。再看下面的例子:
void func(int * n) { int l = 9; n = &l; } void main() { int k = 1; int* n = &k; func(n); }
这个情况,执行完func函数,n的指向还是1,不会变。
引用传递:
引用就是给当前地址起个别名,引用永远修改的都是,传入参数的值。
void func(int&n) { n =100; } void main() { int k 120; func(k); }
这个情况执行完,func函数,K的值就变成了100.