伙计这是一个程序,我在我的编译器上运行,我得到30 0 0 0作为输出.可以解释我为什么值为0.因为在2'循环tmp将指向数组之外的东西所以wouldn'这是一个垃圾值.为什么不打印垃圾值而是在输出中输入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();
}
Run Code Online (Sandbox Code Playgroud)
您不添加sizeof(int)到int指针到达下一个数组元素; 你添加1.添加sizeof(int)将按sizeof(int) 元素(可能是4个元素)前进,让你超过数组的末尾.这是你的问题.
编辑:好吧显然该程序是一个面试问题的一部分,旨在说明未定义的行为,面试问题的正确答案是,一旦调用了未定义的行为,任何事情都可能发生.
| 归档时间: |
|
| 查看次数: |
196 次 |
| 最近记录: |