在学习指针时,查看数组单个元素占用字节数为8。当在循环中使用p++时,发现每次自动跳4个字节,但是元素正常输出。
int arr[10] = {1,2,3,4,5,6,7,8,9,0};
int * p = arr;
int a = 100;
cout << (int)sizeof(&arr[1]) << endl; // 8,字节大小为8 但是每次加4都可以知道位置
for (int i = 0; i < 10; i++)
{
// cout << arr[i] << endl;
cout << (long long)&arr[i] << endl; // 加4,但是int * p 为8,为什么还能找到
cout << *p << endl;
cout << (long long)p << endl;
p++;
}
输出结果:
549474793952
1
549474793952
549474793956
2
549474793956
549474793960
3
549474793960
549474793964
4
549474793964
549474793968
5
549474793968
549474793972
6
549474793972
7
549474793976
8
549474793980
9
549474793984
549474793988
0
549474793988
结果图中每次增加4个字节。我的理解是不应该增加8嘛?