f(&a) 在 C 中可以 运行 吗?
f(&a) is possible to run in C?
下面的解释让我很困惑:
When an argument is pointer to a variable x, we normally assume that x will be modified :
f(&x);
It is possible, though, that f merely needs to examine the value of x, not change it.
我厌倦了理解,下面的代码无法工作。
#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
一个实际使用的例子 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 声明。这就是为什么他们甚至不编译的原因。
下面的解释让我很困惑:
When an argument is pointer to a variable x, we normally assume that x will be modified : f(&x);
It is possible, though, that f merely needs to examine the value of x, not change it.
我厌倦了理解,下面的代码无法工作。
#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
一个实际使用的例子 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 声明。这就是为什么他们甚至不编译的原因。