본문 바로가기

IT/C언어

[C언어] 포인터 이해하기

 

[C언어] 포인터 이해하기

 

 

안녕하세요. 지토우에요.

오늘은 특이한 변수를 배워보겠습니다.

바로 포인터, 혹은 포인터 변수라고 부르는 아이인데요.

개념적으로 잘 이해하고 계셔야 합니다!

 

 

 

1. 포인터란?

 

우리는 포인터 변수에 대해 배우면서 & 연산자와 * 연산자를 많이 사용하게 됩니다.

이름부터 알아볼까요?

 

&  :  Ampersand (앰퍼센드)

*   :  Asterisk(아스테리스크)

 

입니다.

 

앞서 이 연산자들에 대해 배웠습니다.

& 연산자를 통해 주소를 알 수 있었고 * 연산자를 통해 주소에 저장된 값을 참조할 수 있었지요?

이 친구들을 포인터까지 확장시킵시다.

 

포인터 변수란 주소를 저장하는 변수 입니다.

C언어의 장점 중 하나가 바로 포인터인데요.

기존의 변수는 데이터를 저장하지만 포인터는 메모리 공간의 주소를 저장합니다.

포인터 변수가 주소를 저장하려면 변수의 주소를 알야아 하는데

변수 이름 앞에 & 연산자를 붙이면 해당 변수의 시작 주소를 반환합니다.

더 나아가서 포인터 변수가 저장하는 변수의 주소에 저장된 값을 참조하기 위해서는 * 연산자를 사용하지요.

 

앞서 배운것들을 복습해볼까요?

 

 

 

4행, 5행에서는 변수 num1에 3을 저장하고,

변수 num2에 문자 A를 저장합니다.

 

7,8행에서 &num1(변수 num1 주소, 23f848), num1, *&num1(&num1에 저장된 값 참조, 3), &num2(변수 num2의 주소, 23f83f), num2, *&num2(&num2에 저장된 값 참조, A)를 출력합니다.

 

num1과 *&num1은 같은 메모리 공간입니다.

num2와 *&num2도 같은 메모리 공간입니다.

 

아래는 위 소스의 결과값 입니다.