c++ - 运算符优先级和指针算法

标签 c++ pointers scope rvalue

给定以下代码:

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/

相关文章:

c++ - 交替的 cin/cout 很慢?

c - 将c中的指针存储在特定寄存器中

arrays - 将字符串添加到数组 C(指针)

java - 从类方法访问 onCreateView() 中声明的变量

c# - 导出托管 C# 函数以将更改的 char* 参数返回到非托管代码

c++ - 在 C++11 中处理毫秒的正确方法是什么

c++ - 在 boost 的 multi_index_container 中获取不等于 x 的值

c++ - C++ 中指向对象的指针——堆栈/堆上有什么?

c++ - 在继承的情况下不在此范围内声明

javascript - mongodb mapreduce 范围 - ReferenceError