c - 在 C 中递增 NULL 指针

标签 c pointers null undefined-behavior

如果我在 C 中递增 NULL 指针,那么会发生什么?

#include <stdio.h>

typedef struct
{
        int x;
        int y;
        int z;
}st;

int main(void)
{
        st *ptr = NULL;
        ptr++; //Incrementing null pointer 
        printf("%d\n", (int)ptr);
        return 0;
}

输出:

12

它是未定义的行为吗?如果,那么为什么

最佳答案

行为总是未定义的。你永远不能拥有 NULL 的内存。

指针运算仅在数组内有效,您可以将指针设置为数组的索引或最后一个元素之外的一个位置。请注意,我在这里谈论的是设置指针,而不是取消引用它。

您还可以设置一个指向标量的指针和一个指向该标量的指针。

您不能使用指针运算来遍历您拥有的其他内存。

关于c - 在 C 中递增 NULL 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43673104/

相关文章:

c - 使用GtkCombo进行多项选择

c - 为什么我会遇到此代码的段错误?

c++ - 将字符串转换为指针

php - HTTP 请求失败 - Google map 地理编码/HostGator

nil 类型的 Lua 条件

c++ - 为什么 printf 在打印十六进制时只打印一个字节?

c - 如何在 Windows 上绘制突出显示/选定的位图?

c - 解释一下这段代码的程序的输出?

c 用作矩阵索引的指针

null - 不在 Presto 与 Spark SQL 的实现中