임베디드 개발자/코딩
포인터/배열
임베디드초보자
2022. 1. 19. 23:49
1. 포인터란
- 다른 변수, 변수의 메모리 공간 주소를 가리키는 변수를 말한다.
- 포인터가 가리키는 주소를 가저오는 것을 역참조라 한다.
- C, C++, 등 하위 레벨까지 제어 가능
- int > 정수형 변수 | char > 문자형 변수 |포인터> 포인터 변수(변수의 주소)
#include <stdio.h>
void main() {
char ch;
char* p;//문자형 변수와 포인터 변수를 선언
ch = 'A';
p = &ch;//문자 'A'를 ch에 대입하고 ch 의 주소를 p에 대입한다.
printf("ch가 가지고 있는 값: ch > %c \n", ch);//ch 가 가지고 있는 값 결과: A
printf("ch가 가지고 있는 값: ch > %d \n", &ch);//ch의 주소 &ch 결과: 100
printf("ch가 가지고 있는 값: ch > %d \n", p);// p가 가지고 있는 값 결과: 100
printf("ch가 가지고 있는 값: ch > %c \n", *p);//p가 가리키고 있는 곳의 값 결과 p
}
- 현재 ch 의 주소는 100이다.(ch는 a라는 값을 가지고 있다.)
- p의 주소는 어디여도 상관 없다. 100238989번지 일 수도 있고 128478 일 수도 있다.
- 여기서는 설명을 위해 102~105번지에 p가 있다고 했다.
- 중요한 것은
- ch의 주소는 100이다(("%d",&ch)를 통해 주소를 알 수 있다.)
- p가 가지고 있는 값은 ch의 주소와 동일한 100이다
(단순히 포인터 변수인 p의 값을 출력했을 때 가리키는 주소가 출력된다.) - 가리키는 곳의 값을 확인할 수 있다.(*p 를 통해 주소 100이 실제로 가지는 값을 출력할 수 있다.)
- 이러한 사항을 알아둔다면 간단한 포인터의 정의를 알 수 있을 것이다.
2.포인터를 왜쓰는가?
- 우리가 남의 집을 갈 때 주소를 알아야 갈 수 있고 그 주소를 찾아 헤매야한다.
- 포인터는 이를 쉽게 만들어준다. 직접 찾아야하는 주소를 우리가 알려줌으로서 용량 및 처리시간에 이득을 준다.
또한 배열에서도 포인터는 빈번하게 쓰이는데 ... 이는 다음에 알아보자 !!