知识点
知识1:
short 类型在内存中一次访问 2 个字节
题目
Q:下面代码的结果是什么?
#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 类型一次访问 2 个字节,所以 8 个字节变成 0
答:
最后打印 0 0 3 4 5
其他问题
Q:为什么要将 arr 的地址强制转换成 short*
A:这里将 arr 的地址强制转换为 short*,使得 p 可以以 short 类型的方式访问内存
Q:为什么不一开始就将 arr 设置成 short 类型的数组
A:arr 中存放整数,如果一开始就定义为 short 类型,可能会导致数据溢出或精度损失