函数中的指针如何在此代码中工作?
How does pointer in function work at this code?
int f_point(int kek,int *lol) {
*lol *= *lol;
return kek;
}
int main {
int x;
std::cin >> x;
int *adress_of_x = &x;
int a,b = f_point(x,&x); //how does it work?
std::cout << a << LINE_JUMP;
std::cout << b << LINE_JUMP;
}
例如,如果我给 2 编程,那么我将得到 0 和 2。为什么?
int a,b = f_point(x,&x); //how does it work?
变量声明使 a
未初始化并根据 f_point(x,&x);
.
的结果初始化 b
因为它是一个未初始化的变量,所以在
中访问 a
的值
std::cout << a << LINE_JUMP;
语句导致您的程序出现未定义的行为。 0
的输出只是所有可能性中的一种(包括你的冰箱意外爆炸或小恶魔从你的鼻孔飞出)。
b = f_point(x,&x)
在这个语句中第一个参数的值是 2
.
你的函数没有改变第一个参数的值和 returns 相同的值。
您正在按值 传递第一个参数,因此它与x
的更新值无关。变量 a
未初始化,因此它是垃圾值。
int f_point(int kek,int *lol) {
*lol *= *lol;
return kek;
}
int main {
int x;
std::cin >> x;
int *adress_of_x = &x;
int a,b = f_point(x,&x); //how does it work?
std::cout << a << LINE_JUMP;
std::cout << b << LINE_JUMP;
}
例如,如果我给 2 编程,那么我将得到 0 和 2。为什么?
int a,b = f_point(x,&x); //how does it work?
变量声明使 a
未初始化并根据 f_point(x,&x);
.
b
因为它是一个未初始化的变量,所以在
中访问a
的值
std::cout << a << LINE_JUMP;
语句导致您的程序出现未定义的行为。 0
的输出只是所有可能性中的一种(包括你的冰箱意外爆炸或小恶魔从你的鼻孔飞出)。
b = f_point(x,&x)
在这个语句中第一个参数的值是 2
.
你的函数没有改变第一个参数的值和 returns 相同的值。
您正在按值 传递第一个参数,因此它与x
的更新值无关。变量 a
未初始化,因此它是垃圾值。