例题:

下面代码的结果是:(          )

#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;
}

由于short是短整型的,那么其,因此p每次只能得到两个字节,而由于原来是4次循环那么其实是相当于4/2=2个数,也就是说对原来的前两个数赋值为0,那么打印出来得话,自然是:0,0,3,4,5