通过引用和指针传递

时间:2014-08-19 04:30:24

标签: c pointers pass-by-reference

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

2 个答案:

答案 0 :(得分:7)

在C中有没有通过引用传递,它总是按值传递。

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

static void changeTo42 (int *pXyzzy) {
    *pXyzzy = 42;
}
:
int x = 0;
changeTo42 (&x);

对比一下C ++ true 通过引用传递,你不必用指针捣乱(特别是指针指针,甚至经验丰富的编码人员可能偶尔会诅咒和咬一口他们的牙齿):

static void changeTo42 (int &xyzzy) {
    xyzzy = 42;
}
:
int x = 0;
changeTo42 (x);

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

答案 1 :(得分:0)

您可能正在考虑使用C ++。我将在下面介绍。

在C中没有通过引用传递。要完成相同的专长,您可以将变量的指针作为参数发送,并取消引用方法中的指针,如paxdiablo的注释中所示。

在C ++中,如果您尝试通过引用C样式传递(如前所述)或者您尝试传递参数,则可以完成相同的操作:

static void multiply(int& x){
    x * 7;
}

void main(){
    int x = 4;
    multiply(x);
}

该程序末尾的变量x等于28。

相关问题