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 &a
是对 a 的引用,而不是指向 a 的指针。参考来自 C++,而不是 C。您对 C 答案或 C++ 答案感兴趣?
C回答,谢谢
你好像搞错了。参考文献是 C++ 特性,链接的问题是 C++。
您的代码中没有指针。
【参考方案1】:
一个实际使用f(&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 &a
,这不是有效的C 声明。这就是他们甚至不编译的原因。
【讨论】:
以上是关于f(&a) 可以在 C 中运行吗?的主要内容,如果未能解决你的问题,请参考以下文章