gpt4 book ai didi

c++ - 指针和引用

转载 作者:行者123 更新时间:2023-11-28 06:01:51 27 4
gpt4 key购买 nike

问题来了。我正在尝试创建一个内存图,我理解直到 b++ 的所有内容,因为当执行该代码时,它会将 val 的值从 10 更改为 4。这是什么原因?

#include <iostream>

using namespace std;
void mem(int*& a, int* b){
a --;
b++;
a = new int[3];
a[0] = 3;
a[1] = *b;
a[2] = ++(*b);
}
int main()
{
int data[] = {2, 4, 6, 8};
int *ptrA = data;
for (int i = 0; i < 4; i ++){
(*ptrA)++;
ptrA++;
}
int val = 10;
mem(ptrA, &val);
}

最佳答案

在您的示例中,b 是一个指向整数的指针,b++ 要求指针以相同的方式递增(即指向下一个可用整数)作为 ptrA++。然而,区别在于 ptrA 指向数组的开头;我们仍然拥有下一个可用整数的内存,所以一切都很好。对于b,它指向一个整数;增加它并在之后尝试使用它会导致未定义的行为。

关于c++ - 指针和引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33132219/

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