1

这是我的导师提出的关于如何在方法函数中打印局部变量的主方法值的问题,当它是变量推送并从堆栈中弹出时(因为当方法函数调用它时,它是变量推送并且当它到达结束从堆栈中弹出时)然后它是局部变量存储回内存。

为什么 main 方法 print 100 ?

// Define a global pointer
int *ptr;

int method()
{
    // Define a variable local in this method 
    int local = 100;

    // Set address of local variable (name of variable is local) 
    // in the ptr pointer
    ptr = &local;

    return -1;
}

int main()
{
    // Call method
    method();   

    // Print value of ptr pointer
    cout<<*ptr<<"\n";   

    return -1;
}
4

1 回答 1

1

如果你问为什么主要方法是打印 100。

1.局部变量被分配了一些内存空间。(比如说在 X。因此 [x]=>100)

2.然后将全局指针分配给X处的点。(比如说指针空间是Y。[Y] => X)

3.因此指针的点是X。

4.现在你选择打印指针的值。即 [[y]]=[x] 即 100。

为什么不打印垃圾值是因为即使内存空间不再分配给本地,它仍然包含该值。

如果您编写更多代码,则内存中的点可能已被另一个变量覆盖

于 2012-12-04T17:01:57.533 回答