[C++] 포인터

GDORI·2024년 8월 18일
0

C++

목록 보기
3/3

포인터는 주소값을 담을 수 있는 변수이다.
왜 사용을 하는가? 사용 영역에 벗어난 경우에도 메모리에서 주소를 참조하여 값을 변경할 수 있다.
main 함수가 아닌 다른 함수에서 값을 변경하고자 할 때 쓰인다.

데이터형* 포인터변수명;
int* a;

int*b, c; // b는 포인터 변수, c는 일반 변수
int* a, b;
b = 10;
a = &b;

cout << "*a = " << *a << endl; // 10
cout << "b = " << b << endl; // 10

cout << "*a 주소 = " << a << endl; // 000000297C8FFA64
cout << "b 주소 = " << &b << endl; // 000000297C8FFA64

*a = *a + 1;

cout << "b의 값은 " << b << endl; // 11

b의 주소값을 포인터변수 a에 넣어 a를 변경하면
b또한 변경이 되는 것을 알 수 있다.

int* p = new int;

new 키워드를 사용하게 되면 변수를 이용하여 초기화하지 않아도 포인터를 초기화할 수 있다.

delete p;

new키워드를 사용하여 초기화한 사용하지 않는 포인터변수는 delete를 이용하여 메모리 환수가 가능하다.

double* p = new double[3];
p[0] = 1.1;
p[1] = 2.2;
p[2] = 3.3;

cout << p[0] << endl; // 1.1
cout << p[1] << endl; // 2.2

p = p + 1;

cout << p[0] << endl; // 2.2
cout << p[1] << endl; // 3.3

p[1] = p[1] + 1;
cout << p[1] << endl; // 4.3

p = p - 1;

delete[] p;

배열 형식으로 부여도 가능하다.
단 메모리폴에 환수할 경우 delete[] 를 사용해줘야 한다.

일반적인 배열이름에 연산한다는 것은 불가하나
위 코드의 경우 포인터이기 때문에 주소를 한칸씩 미룬다는 의미로 쓸 수 있다.

profile
하루 최소 1시간이라도 공부하자..

0개의 댓글