gpt4 book ai didi

对未初始化指针指向任何地方的事实感到困惑

转载 作者:行者123 更新时间:2023-11-30 18:50:51 25 4
gpt4 key购买 nike

#include <stdio.h>

int main(void)
{
int *ptr;
printf("%p", ptr); // Error: uninitialized local variable 'ptr' used
// Output is "0"
}

我正在阅读C-FAQ关于空指针。它说未初始化的指针可能指向任何地方。这是否意味着它指向内存中的随机位置?另外,如果这个陈述是正确的,为什么当我尝试 printf("%p",ptr) 时会发生错误?由于未初始化的指针ptr指向某个随机位置,看来它必须打印出这个随机位置!

最佳答案

统一化auto变量(指针类型或其他类型)的内容是不确定;实际上,它是最后写入该内存位置的任何内容。这个随机位模式对应于程序中有效地址1的可能性非常低;它甚至可能是陷阱表示(与类型的合法值不对应的位模式)。

尝试取消引用无效的指针值会导致未定义的行为; 任何结果都是可能的。您的代码可能会彻底崩溃,可能会在没有明显问题的情况下运行,也可能会让您的系统处于糟糕的状态。

<小时/>

  1. 即,程序中定义的对象或函数的地址,或者使用 malloc 或类似对象分配的动态对象。

关于对未初始化指针指向任何地方的事实感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38863476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com