f(&a) 可以在 C 中运行吗?

Posted

技术标签:

【中文标题】f(&a) 可以在 C 中运行吗?【英文标题】:f(&a) is possible to run in 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++。 您的代码中没有指针。 【参考方案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 声明。这就是他们甚至不编译的原因。

【讨论】:

以上是关于f(&a) 可以在 C 中运行吗?的主要内容,如果未能解决你的问题,请参考以下文章

C++ AMP 库对 F# 有用吗?

视图可以与并行集合一起使用吗?

object _c 语言可以在函数中再定义函数吗

有人可以给我一个不一致的可接受启发式的例子吗?

有人知道C语言中&和^的使用方法吗?

从镜头列表创建遍历