函数中的指针如何在此代码中工作?

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 未初始化,因此它是垃圾值。