C++ 传参的方式 值传递,指针传递,引用传递

关于传参总是搞晕,这里总结下:

值传递:

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.

原文地址:https://www.cnblogs.com/132818Creator/p/11277036.html