【发布时间】:2014-11-11 21:50:28
【问题描述】:
我正在研究一些C代码,当我遇到了以下sn-p:
struct example *example_clone(struct example *ex)
{
struct example *new_ex;
new_ex = ex + 1; // How does this works ?
....
new_ex = some_func(...); //makes new_ex as struct example
....
}
现在考虑new_ex = ex + 1;
new_ex 是在内存中的 ex 之后吗?
如果内存中ex 之后存在其他对象怎么办。换了吗?
【问题讨论】:
-
使用指针算法,
+1表示+ sizeof(struct example)。 -
如果输入指针
ex指向一个结构体数组,那么ex+1指向数组中的下一个结构体。但是如果ex指向一个单独的结构,那么ex+1就不会指向任何有用的东西。 -
new_ex = ex + 1;表示new_ex = &ex[1];
标签: c++ c pointers memory-management