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

时间:2016-11-25 19:28:18

标签: c++ pointers variable-assignment

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.为什么?

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只是其中一种可能性(包括你的冰箱出乎意料地爆炸或者小恶魔飞出你的鼻孔)。