gpt4 book ai didi

c - 为什么不是垃圾值

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:12:19 27 4
gpt4 key购买 nike

伙计们,这是我在编译器上运行的程序,我得到 30 0 0 0 作为输出。有人能解释一下为什么值为 0 吗?因为在第 2 个循环 tmp会指向数组外的东西,所以它不会是垃圾值。为什么没有打印垃圾值,而是 0 出现在输出中。

void main()
{
int array[4]={10,20,30,40};
int *tmp=array;
for (int i=0;i<4;i++)
{
tmp+=sizeof(int);
printf("%d",*tmp);
}
getch();
}

最佳答案

您不会将 sizeof(int) 添加到 int 指针以获取下一个数组元素;您添加 1。添加 sizeof(int) 将前进 sizeof(int) elements(可能是 4 个元素),使您超过阵列。这是你的问题。

编辑:好吧,显然该程序是面试问题的一部分,旨在说明未定义的行为,面试问题的正确答案是一旦调用未定义的行为,任何事情都可能发生。

关于c - 为什么不是垃圾值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4870358/

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