通过引用和指针传递

Raz*_*zor 2 c pointers pass-by-reference

通过引用函数中的参数传递和将指针变量作为参数传递给函数有什么区别?

pax*_*blo 7

没有路过的C基准,它总是按值传递.

C开发人员可以通过将指针传递给变量并使用函数中的解除引用来访问它来模拟传递引用.类似下面的内容,它将变量设置为42:

static void changeTo42 (int *pXyzzy) {
    *pXyzzy = 42;
}
:
int x = 0;
changeTo42 (&x);
Run Code Online (Sandbox Code Playgroud)

与C++ 真实的传递方式相比,你不需要用指针(特别是指针指针,即使是经验丰富的编码人员偶尔会诅咒和咬牙切齿):

static void changeTo42 (int &xyzzy) {
    xyzzy = 42;
}
:
int x = 0;
changeTo42 (x);
Run Code Online (Sandbox Code Playgroud)

我会恳请ISO考虑添加对下一个C标准的真实引用.不一定是C++中的完整功能,只是可以解决人们在调用函数时遇到的所有问题.