gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 23:33:20 25 4
gpt4 key购买 nike

给定以下代码:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com