#include <stdio.h>
int main()
{
int arr[] = {1,2,3,4,5};
short *p = (short*)arr;
int i = 0;
for(i=0; i<4; i++)
{
*(p+i) = 0;
}
for(i=0; i<5; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
这么一窜代码,它的输出确实0 0 3 4 5 ,因为short类型只有两个字节,而我们在赋值0的时候这个p啊就只能两个字节两个字节的赋值,到最后它一共是经历了四次循环,可真正赋值零的只有12345中的12,arr是int,4字节,强行转换过来的。