gpt4 book ai didi

c++ - *ptr1++ = *ptr2++ 后按索引访问

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:28:11 24 4
gpt4 key购买 nike

我的代码是这样的:

int main()
{
int a[] = {1,23,5,56,7,5};
int *p2 = a;
size = sizeof(a)/sizeof(a[0]);
int *p1 = new int[size];

cout << "sizeof " << size << endl;
int i = 0;
while(p2 != a+size )
{
*p1++ = *p2++;
}
cout << p1[1] << ' ' << p1[3];
return 0;
}

cout << p1[1] << ' ' << p1[3];输出与 a[1] 和 a[3] 不同的值。任何人都可以向我解释为什么会这样吗?

最佳答案

您的 while 循环会修改 p1。循环完成后,p1 将指向新数组的末尾(实际上,它将指向末尾之后 的下一个位置)。要解决此问题,请保留原始 p1 的拷贝。

int *p = p1;
while(p2 != a+size )
{
*p1++ = *p2++;
}
p1 = p;
cout << p1[1] << ' ' << p1[3];

关于c++ - *ptr1++ = *ptr2++ 后按索引访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9363146/

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