题
如果我的指针指向向量中的元素,例如元素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
, ,假设没有进行重新分配,也将保持相同(退房 这个答案).
不隶属于 StackOverflow