C/C++ 引用与指针的传递
在C中函数参数的传递方式有两种,值传递和指针传递,而C++添加了一种:引用传递。下面的例子可作为参考:
(1)值传递
void func1(int x)
{ x = x + 10; }
...
int n = 0;
func1(n);
std::cout << n << std::endl; // n = 0
(2) 指针传递
void func2(int *x)
{ (*x) = (*x) + 10; }
...
int n = 0;
func2(n);
std::cout << n << std::endl; // n = 10;
(3) 引用传递
void func3(int &x)
{ x = x + 10; }
...
int n = 0;
func3(n);
std::cout << n << std::endl; // n = 10
针对于引用而言,是C++中的概念,引用有一些规则如下:
(1) 引用被创建的同时必须被初始化,而指针可在任何时候被初始化
(2)不可有NULL引用,引用必须与合法的存储单元关联,而指针可为空
(3)一旦引用被初始化,就不能改变其关系,而指针可以随时改变所指对象
引用可以做的事情,指针同样可以,然而,指针的过于强大,使得非常危险。简单而言,杀鸡焉用牛刀,砍破了手指才明白,的确应该“用适当的工具做适当的事情”吧 ^_^