关于传参总是搞晕,这里总结下:
值传递:
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.