Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 按地址返回_C - Fatal编程技术网

C 按地址返回

C 按地址返回,c,C,我有几个问题 *p出现在内存布局的哪个部分 我将本地变量地址复制到临时指针,而不分配内存。但即使这样,它也存储了局部变量的地址,这是怎么可能的呢 这个程序对我来说运行得很好,当我去引用它时(局部变量肯定不存在),我怎么还能得到这个值呢 真的什么都不懂。任何人都可以详细解释我上面的所有查询。当在函数外部访问返回的地址时,返回局部变量的地址会导致未定义的行为 变量b的生存期就在函数foo()中,它不能超过该函数的生存期,因此访问该函数中的位置是可以的,但不能返回它的地址并在函数外部访问它 *p出现在

我有几个问题

  • *p出现在内存布局的哪个部分
  • 我将本地变量地址复制到临时指针,而不分配内存。但即使这样,它也存储了局部变量的地址,这是怎么可能的呢
  • 这个程序对我来说运行得很好,当我去引用它时(局部变量肯定不存在),我怎么还能得到这个值呢

  • 真的什么都不懂。任何人都可以详细解释我上面的所有查询。

    当在函数外部访问返回的地址时,返回局部变量的地址会导致未定义的行为

    变量
    b
    的生存期就在函数
    foo()
    中,它不能超过该函数的生存期,因此访问该函数中的位置是可以的,但不能返回它的地址并在函数外部访问它

    *p出现在内存布局的哪个部分

    您的程序中没有
    p

    我将本地变量地址复制到临时指针,而不分配内存。但即使这样,它也存储了局部变量的地址,这是怎么可能的呢

    局部变量有一个地址。你可以回那个地址

    这个程序对我来说运行得很好,当我去引用它时(局部变量肯定不存在),我怎么还能得到这个值呢


    带有bug的代码会做一些你意想不到的奇怪事情。修复错误,谜团就会消失。

    您仍然返回指向局部变量
    b
    的指针,这会导致错误指针和可能的未定义行为。什么是*p?你能把你所有的代码都贴在这里吗?看起来有人同意了,并对两个答案都投了反对票。@ParamagneticCroissant是的,有点奇怪,“返回局部变量的地址会导致未定义的行为。”--这不应该是这样的吗“返回局部变量的地址并在其他函数中使用它会导致未定义的行为。”?
    int * foo()
    {
      int b=8;
      int * temp=&b;
      return temp;
    }