如果我的指针指向向量中的元素,例如元素2,然后该元素与同一向量的元素4交换。指针现在指向元素2,元素4,还是不指向元素?例子:

向量A等于[1,2,3,4,5
创建指向元素2的指针,在这种情况下等于3
交换元素2和4
矢量A现在[1,2,5,4,3

矢量指向在哪里?

有帮助吗?

解决方案

您的意思是,“指针指向在哪里?”。如果是这样,它将指向内存中与以前相同的位置 5.

另外,通过交换,我假设您是要在两个位置之间交换值。

为什么?

仅仅是因为您的指针指向内存位置。存储在那里的东西无关紧要 - 可能是一个价值,也可能是垃圾。当您将其取消(查看值是什么)时,它将返回存储在该位置的值。

由于您已交换了值,因此该位置的值为 5 不是 3 因此, 指针仍指向相同的位置,并且没有变化位置的值已更改.

示例代码:

// Create the vector
int a[] = {1,2,3,4,5};
int* ptr = &a[2];
// Display original status
std::cout<<"Original Value: "<<*ptr<<std::endl;
std::cout<<"Address: "<<ptr<<std::endl;
// Swap values
std::swap(a[2],a[4]);
// Check 
std::cout<<"New Value: "<<*ptr<<std::endl;
std::cout<<"Address: "<<ptr<<std::endl;

笔记:

我在示例中使用了一系列整数 std::vector, ,假设没有进行重新分配,也将保持相同(退房 这个答案).

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top