主要

tst_struct *tst1;
printf("P outside function1: %p \n", tst1); //Output: 0x0
tst_func(tst1);


功能

tst_struct *tst_func(tst_struct *tst1)
{
    printf("P from param: %p \n",tst1);  // Output 0x0
    tst_struct *tst2;
    printf("P inside function: %p \n", tst2); // Output 0x7ffeebcf8940
}


我不明白为什么会这样。

我在两个函数中都做了同样的事情。

如果我创建一个变量并检查主地址,而不分配任何值,则结果为0x0。

但是,如果我在另一个函数内创建任何变量,则会收到一个地址。

主要功能和“正常”功能之间有区别吗?
谢谢

最佳答案

未定义的行为。如果值为零,那么您很幸运。您有一个未初始化的变量,想知道为什么它具有随机值?您可能在main或调试版本中将零(倾向于将内存初始化为零),也可能没有。它取决于编译器/ os / cpu,永远不应认为这是理所当然的。可以是任何东西,因为它是未定义的。

关于c++ - 函数内部的内存地址,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55822068/

10-10 17:03