CMS419 2020. 7. 13. 18:09

포인터(pointer)

다른 변수의 주소를 가지고 있는 변수이다.

ex)

포인터 p가 변수 a의 주소값을 가지고 있다.

int a = 100;

int *p;

p = &a;

p가 a를 가리킨다.

 

포인터와 관련된 연산자

 

& : 주소 연산자(변수의 주소를 추출한다.)

* : 간접참조 연산자(포인터가 가리키는 곳을 가리킨다.)

    역참조 연산자라고도 한다.

ex)

 

int a;  //정수형 변수

p = &a  //변수의 주소를 포인터로 저장

 

int a = 20

*p = 200;  //포인터 p가 가리키는 곳에 200을 저장한다

-> a = 200;

 

NULL 포인터

어떤 객체도 가리키지 않는 포인터이다.

포인터가 아무것도 가리키고 있지 않을 때는 항상 널포인터 상태로 만들어 두는 것이 좋다.

 

함수 매개변수로 포인터 사용

포인터는 함수의 매개변수로 전달될 수 있다.

특정한 변수를 가리키는 포인터가 함수의 매개변수로 전달되면 그 포인터를 이용하여 함수 안에서 외부 변수의 값을 변경할 수 있다.

 

배열과 포인터

배열을 함수의 매계변수로 전달되면 함수 안에서 배열의 내용을 변경할 수 있다.

왜냐하면 배열의 이름은 포인터 이다. 배열의 이름은 배열의 첫번째 주소를 가리키는 포인터 변수이다.

그래서 함수의 매계변수로 전달 될 때, 그 함수 안에서 배열의 내용을 변경할 수 있는 것이다.

 

동적 메모리