给定以下代码:
void Allocate(int *p)
{
p = new int;
*p++ = 2;
}
int main()
{
int i = 10;
Allocate(&i);
std::cout << i << std::endl;
}
我对以下的含义有点怀疑:
*p++ = 2;
输出是 10
,我的理由是 *p++
是临时的,因此在结束时对它的任何赋值都会丢失Allocate(int *p)
的范围。
是这样吗? 提前致谢!
最佳答案
- 在
Allocate
的输入中,p
指向main
中的变量i
功能。 - 这个变量的地址随后丢失并被替换为
新整数
。 - 此 int 的值(未初始化,因此可以 以任何方式开始)设置为 2。
p
指针递增。Allocate
函数此时返回,泄漏了原来的 int 分配。main
函数中i
的值不变, 因为Allocate
没有修改它。
关于c++ - 运算符优先级和指针算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16849247/