1.指针定义类型有很多种,如:int * ,char * ,double * ,short *等,这里要注意到的是在编译器32位环境下,所有指针都占4个字节,32个bites,而在64位环境下,所有指针都占8个字节,64个bites,所以如果题目中出现,所有指针都占4个字节这类选项,那么这个选项一定是错的,因为说法过于绝对。
再来讲讲这些类型一次读取的空间内存,int *一次读取4个字节,char * 一次读取1个字节,short *一次读取2个字节,,double *读取8个字节,float* 读取4个字节,所以题目中若出现不同类型的指针指向,一定要注意一次读取几个字节如这组编码:
因为取数组定义的为整型,而指针p为short类型,因此p每次只能指向两个字节,for循环对数组中内容进行修改时,一次访问的是: arr[0]的低两个字节,arr[0]的高两个字节,arr[1]的低两个字节,arr[1]的高两个字节,这里不能推出其前后数组内容:
数组初始化:
0x00ECFBF4: 01 00 00 00 0x00ECFBF8: 02 00 00 00 0x00ECFBFC: 03 00 00 00 0x00ECFC00: 04 00 00 00 0x00ECFC04: 05 00 00 00
for循环完成之后的数组:
0x00ECFB