В основном, мой вопрос заключается в том, что, когда я запускаю эти два сегмента кода, я получаю разные адреса памяти. Первый сегмент кода дает определенный адрес памяти для 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;
}
второй блок кода, на этот раз с & 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;
}
& rValue принимает указатель на rValue. Указатель на указатель не равен самому указателю. – mascoj
Я спрашиваю, почему я получаю другой адрес памяти, когда я запускаю первый сегмент против, когда я запускаю второй сегмент. –