안녕하세요. 코듀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 정의, 사용법에 대해 학습해보도록 하겠습니다.
'C' 카테고리의 다른 글
| c언어- array 배열, string 문자열 사용법 (0) | 2022.11.06 |
|---|---|
| c언어-Fuction 정의, 사용법 (0) | 2022.10.30 |
| c언어-반복문(for문, while문, switch문, break문) (0) | 2022.10.23 |
| c언어-조건문(비교연산자, 논리연산자, if문, else문, else if문 (0) | 2022.10.16 |
| c언어- 변수 선언, 입력, 출력 (0) | 2022.10.09 |