본문 바로가기
컴퓨터 언어/C\C++

[C 언어] 포인터 (pointer) 무엇인가? , 제대로 알자.

by SuperMemi 2020. 3. 16.
반응형

포인터의 이해!

 

포인터도 특정한 변수를 가지는 변수다.

 

예를 들어서 설명하겠다.

검지 손가락을 펴서 앞에 있는 집을 가르켜 보아라. 그 안에는 사람이 살고 있을 것이다.

 

당신이 가르키는 행위 자체가 말 그대로 포인터다.

 

손가락 : 포인터 변수

집 주소 : 포인터가 가르키는 메모리의 주소 값

집안의 사람 : 할당된 메모리 주소에 들어가 있는 값

 

포인터 변수는 메모리 상에 위치한 특정한 데이터의 주소 값을 저장하는 변수이다. 

 

메모리(memory)

    - 컴퓨터 메모리 = 데이터 보관 장소

    - 모든 변수는 주소를 가진다.

 

포인터(pointer)

    - 메모리 주소를 값으로 가지는 변수.

 


예제

1. 변수 선언

2. 포인터 연산자 &, *

int i, *pi, j        // 정수형 변수 i,j, 정수형 포인터 변수 pi 선언.
                     // 포인터 연산자 *는 변수 앞에 붙을 경우 해당 변수를 포인터 변수로 생각한다.
pi = &i;             // 포인터 연산자 &는 변수명 앞에 붙을 경우 변수의 메모리 주소를 가져온다.

i = 10;              // 변수 i에 직접 10이라는 값을 넣는다.
*pi = 10;            // i의 주소를 가르키는 포인터 변수 pi에 10을 넣어 
                     // indirect access로 변수 i에 10이라는 값을 넣는다.
                     // 두 식은 같은 작업을 하는 것이다.
                     
j = *pi;             // 포인터 연산자 *를 이용하여 주소안의 값을 불러 와서 적용시킬 수도 있음.
                     // j = 10이됨.
                     
pi = NULL;           // 포인터 변수(pi) 주소 초기화.

이렇게 포인터 변수를 만들 수 있다. 이때 pi는 정수형 데이터 주소값을 저장할 수 있다.

*pi를 이용해 주소값에 값을 집어넣을 수도 있고,

포인터 변수 pi가 가리키는 주소값의 값을 불러올 수도 있다.

 

&는 변수명 앞에 붙을 경우 변수의 메모리 주소를 가져온다.

[출처]

https://www.geeksforgeeks.org/c-programming-language/

https://whatisthenext.tistory.com/152

https://ideveloper2.tistory.com/4

https://dasima.xyz/c-pointer/

https://modoocode.com/23

 

반응형