c언어 포인터 쉽게 이해하기
- 프로그래밍/C언어
- 2018. 10. 13.
c언어 포인터
c언어의 가장 큰 특징이라고 생각하는 포인터에 대한 글입니다.
int i <-- 변수
int *p <--정수타입 포인터 변수 입니다.
&i <--주소연산자
이것들의 이해를 돕기위해 몇가지 보여드리겠습니다.
(dev c++을 사용해 코딩했습니다.) 포인터.c
포인터 쉽게 이해하기
int형 변수의 값을 999를 넣고 아무것도 하지 않고 출력해보겠습니다.
999라는 값을 확인할 수 있습니다.
이번에는 출력할때 주소연산자를 이용해서 i의 주소를 출력해보겠습니다.
(16진수가 아닌 부호없는 10진수로 출력하겠습니다.)
제 컴퓨터에서는 6487628로 출력이 되네요.
이번엔 포인터 변수를 선언한 뒤 포인터 변수에 i의 주소값을 넣어보겠습니다.
출력하니 역시나 i의 주소값이 나오네요.
그럼 이번에는 선언한 포인터 변수의 *를 없애 그냥 변수로 바꿔보겠습니다.
사진을 보시면 위와 똑같이 주소값을 출력하는 것을 확인할수 있습니다.
(하지만 다른게 있죠 ㅎㅎ 좀더 봐주세요.)
이번에는 printf에 있는 p에 *를 붙여보겠습니다.
*를 뺀 p에서는 오류가 나면서 돌아가지 않지만 포인터 변수p에서는 i의 값인 999를 출력합니다.
p는 i의 주소값을 가지고 있기에 i의 값이 변하면 *p의 값도 변하는 것을 확인할 수 있습니다.
이렇게 되는 이유는 p가 i를 가리키기 때문입니다.
p가 i를 가리키기 때문에 역으로 이런것도 가능합니다.
p가 가리키는곳에 p가 가리키는것+2를 했기 때문에 이렇게 12가 나옵니다.
포인터를 사용한 예시
아래 글을 들어가시면 포인터를 사용한 예가 있습니다.
[C] - c언어 포인터를 사용해 만든 swap함수 문자와 문자 숫자와 숫자 값을 변경
위 내용만 아신다면 왜 저렇게 나오는지 이해하실 수 있을겁니다.