C

c언어-포인터의 정의, 사용법

코듀Codyou 2022. 11. 13. 09:28

안녕하세요. 코듀Codeyou입니다

오늘은 c언어의 포인터의 정의, 사용법에 대해 학습해보겠습니다.

이번 주 학습의 목차입니다.

1. 포인터
1-1. 포인터란
1-2. 포인터의 사용법
2. 포인터와 배열

 

1. 포인터 

1-1. 포인터란?

포인터는 실제 값을 저장하는 변수들과 다르게

각 값이 저장된 메모리의 주소를 저장하는 요소입니다.

예를 들어 int a=10 인 변수가 있다고 하면, 포인터는 a의 값인 10을 저장하는 것이 아니라

a 라는 변수에게 할당된 메모리의 주소 값을 저장합니다. 

 

1-2. 포인터의 사용법

포인터의 사용법은 아래의 예시와 함께 학습해보도록 하겠습니다.

int* ptr;
int a,b;
a=10;
ptr=&a;
b=*ptr;

위의 예시를 보면

먼저 포인터의 선언은 자료형과 변수명 사이에 '*'을 넣습니다.

 

포인터에 특정 변수의 주소값을 저장하고자 할 때는

변수 값을 저장할 때와 같이 '포인터명 =' 까지는 동일하지만, 저장하고자 하는 변수의 이름 앞에 '&'를 붙여줘야 합니다.

'&'는 예시와 같이 뒤에 변수명을 붙여주게 되면 

'&변수명'은 '변수의 메모리 주소'를 의미하기 때문입니다. 

 

마지막 줄의 b=*ptr을 보면, 

여기서 '*'은 곱셈의 '*'가 아니라

'뒤에 따라온 포인터가 저장하고 있는 주소의 위치의 값'을 의미합니다.

 

따라서 ptr가 포인터일 때 *&ptr는 ptr과 같다는 것 또한 알 수 있습니다.

 

2. 배열과 포인터

포인터는 단일의 변수의 주소만 저장할 수 있는 것이 아닌, 배열의 요소의 주소를 저장할 수 도 있는데요.

이때 포인터에 k가 양수인 전제하에,

배열의 요소의 주소를 저장한 포인터명+k으로 작성하게 되면

포인터가 저장하고 있는 주소의 배열의 요소로부터 k번째 뒤의 배열의 요소를 가리키는 의미로 작성할 수 있습니다.

아래의 예제를 통해 이해해보기를 바랍니다.

int a[10];
int *ptr;
ptr=a;	//배열에서 배열명만 작성할 경우, 배열의 첫번재 요소의 주소를 의미함
		//ptr은 a[0]의 주소를 저장함
ptr=ptr+3;	//ptr은 a[0+3] 즉, a[3]의 주소를 저장함

 

이상으로 이번 학습을 마치겠습니다.

다음 주에는 Struct 정의, 사용법 대해 학습해보도록 하겠습니다.