Sil*_*vae 7 c++ pointers dereference
如果我有一个指向向量中的元素的指针,比如元素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;
Run Code Online (Sandbox Code Playgroud)
我在示例中使用了一个整数数组,但是如果你用的是矢量std::vector
,那么假设没有重新分配就会保持不变(请查看这个SO答案).