How*_*Gee 0 c++ memory int pointers
好的,所以在测试中我问了这个问题:
int* ptrA; // assigned memory address 100
int a = 1; // assigned memory address 600
ptrA = &a;
What is the memory address of ptrA + 2?
Run Code Online (Sandbox Code Playgroud)
我以为它是606(int是4个字节+其地址a是600 + 2 = 606但显然答案是608,我错过了什么才能使这个真实?
这是未定义的行为,表达PtrA + 2是非法的.您只能对您拥有的指针进行指针运算,并且不能在您拥有的数组范围之外的指针或超出范围的指针之外添加或减少指针.
我们仍然可以分析这个(虽然没用,因为UB).你假设地址a是600 + 2,但它不是,因为可能sizeof(int*)也是4,所以这变成了600 + 4.所以你得到了600 + 4 + 4 = 608.
| 归档时间: |
|
| 查看次数: |
304 次 |
| 最近记录: |