C++ 为什么传递给函数的指针会得到不同的内存地址?

C++ 为什么传递给函数的指针会得到不同的内存地址?,c++,memory,C++,Memory,基本上我的问题是,当我运行这两段代码时,我会得到不同的内存地址。第一段代码为rValue提供了一个特定的内存地址,第二段代码为rValue提供了一个不同的内存地址,只需添加一个&运算符即可。为什么会发生这种情况 #include <iostream> using namespace std; int pMem(int *rValue){ cout << "Value of rValue is " << *rValue << endl;; co

基本上我的问题是,当我运行这两段代码时,我会得到不同的内存地址。第一段代码为rValue提供了一个特定的内存地址,第二段代码为rValue提供了一个不同的内存地址,只需添加一个&运算符即可。为什么会发生这种情况

#include <iostream>
using namespace std;


int pMem(int *rValue){

cout << "Value of rValue is " << *rValue << endl;;
cout << "Address of rValue is " << rValue << endl;
*rValue = 15;
cout << "Value of rValue now is " << *rValue << endl;
cout << "Address of rValue is " << rValue << endl;

return *rValue;

}

int main() {


int value = 8;
int *pValue = &value;

pMem(&value);



cout << "Value = " << value << endl;
cout << "Address of Value: " << pValue << endl;
cout << "Value at memory address " << pValue << ": " << *pValue << endl;


return 0;
}
#包括
使用名称空间std;
整数pMem(整数*右值){

cout甚至指针本身也会占用内存,并有一个与之相关的地址


所以&rValue是指针rValue的地址,除非它是指向函数的指针,否则该地址将是不同的。

即使指针本身也占用内存并有一个和之相关联的地址


所以&rValue是指针rValue的地址,并且,除非它是指向函数的指针,否则该地址将不同。

此行为的原因是指针是按值传递的。换句话说,当您的函数接收到指针类型的参数时,
rValue

int pMem(int *rValue)
C++为类型为
int*
的全新变量分配空间,该变量在内存中有自己的地址。该变量通过传递给
pMem
的指针表达式初始化。除此之外,它是一个单独的变量,其行为类似于
pMem
的局部变量。特别是参数本身对调用方没有影响

执行此操作时,将打印该参数变量的地址:

cout << &pValue << endl; // Prints a new address

cout此行为的原因是指针是按值传递的。换句话说,当函数接收到指针类型的参数
rValue
时,如下所示

int pMem(int *rValue)
C++为类型为
int*
的全新变量分配空间,该变量在内存中有自己的地址。该变量通过传递给
pMem
的指针表达式初始化。除此之外,它是一个单独的变量,其行为类似于
pMem
的局部变量。特别是参数本身对调用方没有影响

执行此操作时,将打印该参数变量的地址:

cout << &pValue << endl; // Prints a new address

cout&rValue将指针指向rValue。指向指针的指针不等于指针本身。我问的是为什么我在运行第一段时与运行第二段时获得不同的内存地址。&rValue将指针指向rValue。指向指针的指针不等于指针本身。我问的是为什么我获得不同的内存地址运行第一段时的内存地址与运行第二段时的内存地址。