以下代码输出结果是什么?
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 (int i = 0; i < 5; i++)printf("%d", arr[i]);
return 0;
}
答案:
原因 :指针p为short类型,p+1每次移动的是两个字节,而数组arr为int类型,每个数据为int,4个字节,所以指针p移动两次,才能修改数组中的一个数据为0;总共移动4次,所以只能修改两个数据
考点:对内存的理解