当前位置: 技术问答>linux和unix
哪位C语言高手帮我解释下下面程序的运行结果 ???????
来源: 互联网 发布时间:2016-12-26
本文导语: // 运行结果:5,12ff6d,10012ff ????????? // 43 #include #include #include int main() { int a[5] = {1,2,3,4,5}; int *ptr1 = (int*)(&a+1); int *ptr2 = (int*)((int)a+1); printf("%x,%x,%xn",ptr1[-1],ptr2,ptr2[-1]); return 0; } ...
// 运行结果:5,12ff6d,10012ff ?????????
// 43
#include
#include
#include
int main()
{
int a[5] = {1,2,3,4,5};
int *ptr1 = (int*)(&a+1);
int *ptr2 = (int*)((int)a+1);
printf("%x,%x,%xn",ptr1[-1],ptr2,ptr2[-1]);
return 0;
}
// 43
#include
#include
#include
int main()
{
int a[5] = {1,2,3,4,5};
int *ptr1 = (int*)(&a+1);
int *ptr2 = (int*)((int)a+1);
printf("%x,%x,%xn",ptr1[-1],ptr2,ptr2[-1]);
return 0;
}
|
ptr2不是a[1]的地址吧
int *ptr2 = (int*)((int)a+1);
int加了1没加4,应该是a的地址加了1。