포인터를 사용하여 다른 변수에 포함 된 값을 전달하는 작은 바보 같은 프로그램을 만들었습니다. 저는 과제 전후에 관련된 세 가지 변수의 가치와 위치를 인쇄했습니다. 그러나 포인터 안에 들어있는 값과 포인터가 가리키는 변수와 다른 주소를 얻었고 그 이유를 이해할 수 없습니다.C++ : 포인터 값이 뾰족한 변수의 주소와 다릅니다
이 내 주요 프로그램 :
#include <iostream>
#include "01.Point.h"
using namespace std;
int main()
{
int a,b;
cout << "Insert variable's value: ";
cin >> a;
int * point;
cout << "Before assignment:" << endl;
printeverything (a,b,point);
point = &a;
b = * point;
cout << "After assignment:" << endl;
printeverything (a,b,point);
cout << endl;
}
그리고이 제 기능의 구현 :
#include <iostream>
#include "01.Point.h"
using namespace std;
void printeverything (int a, int b, int * c) {
cout << "First variable's value: " << a << "; its address: " << &a << endl;
cout << "Second variable's value: " << b << "; its address: " << &b << endl;
cout << "Pointer's value: " << c << "; its address: " << &c << endl;
}
b는 성공적으로의 값을 가져옵니다, 그래서 모든 것이 잘 작동하지만,이 전체 출력 :
Before assignment:
First variable's value: 5; its address: 0x7fffee49b77c
Second variable's value: 0; its address: 0x7fffee49b778
Pointer's value: 0x7fffee49b8a0; its address: 0x7fffee49b770
After assignment:
First variable's value: 5; its address: 0x7fffee49b77c
Second variable's value: 5; its address: 0x7fffee49b778
Pointer's value: 0x7fffee49b7ac; its address: 0x7fffee49b770
변수 x가 3285 위치에 있고 i가인 경우를 의미합니다. 10, 포인터 p는 값 3285를 포함해야합니다. 그렇다면 왜 이런 일이 발생 했습니까?
고마워요! 그런 다음 함수의 프로토 타입을'(int * a, int * b, int * c)'로 변경하고, 두 변수는 각각'a '와'a'두 개의 cout을 호출하여 이렇게 호출합니다. printeverything (& a, & b, point);'. 좋은 하루 되세요. 함수에 대한 참조를 올바르게 전달하는 법을 배울 수있을 것 같습니다. –