因为当(char*)之后,后面的加i*sizeof(int)表示的是4,8,12.
而如果你不加的话也可以,只需要用arr+i就可以了,因为这里的i指的是加四个字节。
数组名在等号右边时,类型是int *,表示指向数组首元素的指针。第8行等号右边arr的类型是int *,强转为char *,此时仍然指向数组中的元素1, 加上 i * sizeof(int) = 0,也就是让elemAddr指向元素1;第9行就通过解引用指针,取出元素1的值1;然后进行下一次循环,i的值是1,此时elemAddr指向arr偏移1*4=4的元素,也就是说指向元素2,第9行此次循环打印2;同理,第三次循环打印3。其实程序就是利用强转依次取出数组中的所有元素。
|