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.为什么?
答案 0 :(得分:2)
b = f_point(x,&x)
为2
您的函数不会更改第一个参数的值并返回相同的值。
您正在按值传递第一个参数 ,因此它与x
的更新值无关。变量a
未初始化,因此它占用了垃圾值。
答案 1 :(得分:1)
int a,b = f_point(x,&x); //how does it work?
变量声明使a
保持未初始化状态,并从b
的结果中初始化f_point(x,&x);
。
因为它是一个未初始化的变量,所以在
中访问a
的值
std::cout << a << LINE_JUMP;
语句会导致程序的未定义行为。输出0
只是其中一种可能性(包括你的冰箱出乎意料地爆炸或者小恶魔飞出你的鼻孔)。