c - NULL 地址位置的值是多少?

标签 c null

为什么这段代码输出 4?

还请提供一些详细信息,以帮助我更好地理解此类行为。

int main(){ 
     int *p=NULL;
     printf("%d" ,p+1);
     return 0; 
}

最佳答案

您将指针设置为 0 (NULL),然后将其加 1;然后将结果转换为 int 并打印结果。您在这里需要的关键知识是,当您递增(加 1)一个指针时,您实际上增加了指向对象的大小——一个 int 指针被提前指向下一个 int。由于 int 在您的平台上(显然)是 4 个字节,因此 p 递增以指向其开始位置后 4 个字节的地址。

关于c - NULL 地址位置的值是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10969808/

相关文章:

c - glib 是否有需要包含的特定库?

swift - if 中出现 fatal error : unexpectedly found nil while unwrapping an Optional value, 但从未工作

scala - 将元组与null匹配

C++ 新运算符返回新的意外-Dev-cpp

android - ArrayList 即使在将数据插入其中后仍显示 Null

c++ - 有趣的 C++ 代码片段,有什么解释吗?

c - 如何生成0到1之间的随机 float

c - 从 C 中的套接字读取时出现内存不足错误?

无法理解程序背后的逻辑

c++ - 如何在 Mac OS X 10.9 上安装 ZeroMQ 以便在 C/C++ 程序中使用