Pointer

윤서준·2021년 9월 18일
0

C++

목록 보기
3/8

c++에서는 변수의 주소를 연산자 '&'로 확인이 가능하다.
&는 특정 변수 값이 메모리의 '어느 위치'에 저장되어 있는지를 파악 할 수 있다.
주소값은 사용 환경이나 프로그램의 실행 상황에 따라 수시로 바뀌어서
실제로 변수의 주소값이 무엇인지는 크게 의미가 없다 중요한 사실은,
주소를 사용하여 메모리에서의 '위치'를 알아낼 수 있다는 점이다.

포인터는 주소를 저장하는 특수한 변수이다.

포인터 선언

//형명* 포인터명;
//int* pA;

#include <iostream>

using namespace std;

int main()
{
	int a;
	int* pA;
	a = 5;
	pA = &a;

	cout << "변수 a의 값은" << a << "입니다" << endl;```

코드를 입력하세요

cout << "변수 a의 주소값은" << &a << "입니다" << endl;
cout << "포인터 pA 값은" << *pA << "입니다" << endl; // 변수 a의 주소를 출력

return 0;

}

//pA = &a; 변수 a의 주소를 포인터 변수 pA 저장함으로서 원래 변수의 값을 역추적이 가능하다.
포인터를 통해 변수의 값을 추적할 때에는 포인터 앞에 * 라는 연산자를 붙인다(간접참조연산자)
// *pA; - 변수 a의 값을 '간접적'으로 알 수 있다

#include <iostream>

using namespace std;

int main()
{
	int a;
	int* pA;
	a = 5;
	pA = &a;

	cout << "변수 a의 값은" << a << "입니다" << endl;
	cout << "변수 a의 주소값은" << &a << "입니다" << endl;
	cout << "포인터 pA의 값은" << pA << "입니다" << endl;
	cout << "*pA의 포인터값은" << *pA << "입니다" << endl; //*를 사용하면 포인터가 가르키는 변수의 값을 알아낼 수 있다


	return 0;
}

포인터는 또한 이미 존재하는 포인터에 지정된 주소값을 바꿀 수 있다

#include <iostream>

using namespace std;

int main()
{
	int a = 5;
	int b = 10;
	int* pA;
	pA = &a;


	cout << "a의 정수값은 :  " << a << endl;
	cout << "a의 주소값은: " << &a << endl;
	cout << "pA의 값은 : " << *pA << endl;
	pA = &b;
	cout << "b의 정수값은 :  " << b << endl;
	cout << "b의 주소값은: " << &b << endl;
	cout << "pA의 값은 : " << *pA<< endl;

	return 0;
}

포인터에 대입하지 않을 경우

int a = 5;
int pA; // 주소를 대입하지 않은 경우 (X)
cout << "포인터 pA의 값은 << pA << "입니다"<<endl;
cout << "pA의 값은" <<
pA << "입니다"<<endl;

int a;
int* pA = &a; // 포인터 주소 대입 (O)

포인터는 반드시 주소를 대입시킨 후에 사용한다

0개의 댓글