这就是我们C++的数组啊,你们有这样的数组吗,真是数数又组组啊
int v = sizeof(aaaa) / sizeof((aaaa[0]));
要这样来计算数组元素有多少sizeog
是得到这个玩意的内存位数
ptr
是一个指向 example
数组第一个元素的指针。
(char*)ptr
将这个指针从 int*
(整数指针)转换为 char*
(字符指针)。因为 int
和 char
的大小不同(通常 int
是4字节,char
是1字节),所以这一步是必要的以便于进行字节级别的指针运算。
+ 8
是向前移动8个字节。由于数组 example
是整数数组,并且假定 int
类型占4个字节,移动8个字节实际上会跳过两个 int
类型的值(每个 int
4字节)。
(int*)
再次将指针转换回 int*
,因为我们需要修改整数值。
最后,*(int*)((char*)ptr + 8) = 6;
这部分代码将数组的第三个元素(example[2]
)设为 6
。这是因为数组的索引从0开始,所以 ptr + 8
字节实际上指向 example[2]
。
因此,这行代码是一种不太常规的修改数组第三个元素值的方式。在不使用数组下标的情况下直接通过指针运算达到了 example[2] = 6;
的效果。
Comments NOTHING