【问题标题】:f(&a) is possible to run in C?f(&a) 可以在 C 中运行吗?
【发布时间】:2022-01-21 07:48:17
【问题描述】:

下面的解释让我很困惑:

当参数是指向变量 x 的指针时,我们通常假设 x 将被修改: f(&x);

不过,f 有可能只需要检查 x 的值,而不是改变它。

我看腻了,下面的代码无法运行。

#include <stdio.h>

void function(int& a)
{
    a = 5;
}

void func(int b)
{
    b = 5;
}

int main(void)
{
    int x = 0;

    function(x);
    printf("%d", function(x));

    func(x);
    printf("%d", func(x));

    return 0;
}

代码参考来自second answer:

int f(int &a){
  a = 5;
}
int x = 0;
f(x);
//now x equals 5

int f2(int b){
 b = 5;
}
int y = 0;
f2(y);
//y still equals 0

【问题讨论】:

  • int &amp;a 是对 a 的引用,而不是指向 a 的指针。参考来自 C++,而不是 C。您对 C 答案或 C++ 答案感兴趣?
  • C回答,谢谢
  • 你好像搞错了。参考文献是 C++ 特性,链接的问题是 C++。
  • 您的代码中没有指针。

标签: c function address-operator


【解决方案1】:

一个实际使用f(&amp;x)的例子:

#include <stdio.h>

void f(int *p) {
   *p = 4;
}

int main(void) {
   int x;
   f(&x);               // Provide a pointer to `x`.
   printf("%d\n", x);   // 4
   return 0;
}

您的两个程序都使用int &amp;a,这不是有效的C 声明。这就是他们甚至不编译的原因。

【讨论】:

    猜你喜欢
    • 2019-12-20
    • 2019-05-31
    • 2014-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多