#include
#include
int main()
{
int array[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int *p = (int *)(&array+ 2);
printf("%d\n", *(p - 6));
system("pause");
}
不该输出5吗?但为什麽输出了1??
#include
#include
int main()
{
int array[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int *p = (int *)(&array+ 2);
printf("%d\n", *(p - 6));
system("pause");
}
不该输出5吗?但为什麽输出了1??
#include<stdio.h>
#include<stdlib.h>
int main()
{
int array[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int *p = (int *)(&array + 2);
printf("%d - %d - %d - %d\n", (int)(&array), (int)(&array + 2), (int)p, (p - 6));
printf("%d\n", *(p - 6));
}
输出
-4462416 - -4462336 - -4462336 - -4462360
-4462296
说明+2这里每加1相当于+ sizeof(数组)*sizeof(int)=40。
-6,这里每-1相当于 - sizeof(int),4.