为什么这段代码输出 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/