如果我在 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/