c언어 포인터 쉽게 이해하기

c언어 포인터

c언어의 가장 큰 특징이라고 생각하는 포인터에 대한 글입니다.

직접만든 c언어 포인터 썸네일

int i <-- 변수

int *p <--정수타입 포인터 변수 입니다.

&i <--주소연산자

이것들의 이해를 돕기위해 몇가지 보여드리겠습니다.

(dev c++을 사용해 코딩했습니다.) 포인터.c

포인터 쉽게 이해하기

int형 변수의 값을 999를 넣고 아무것도 하지 않고 출력해보겠습니다.

999라는 값을 확인할 수 있습니다.

int형변수

이번에는 출력할때 주소연산자를 이용해서 i의 주소를 출력해보겠습니다.

(16진수가 아닌 부호없는 10진수로 출력하겠습니다.)

제 컴퓨터에서는 6487628로 출력이 되네요.

인트형변수 주소 출력

이번엔 포인터 변수를 선언한 뒤 포인터 변수에 i의 주소값을 넣어보겠습니다.

출력하니 역시나 i의 주소값이 나오네요.

포인터변수 주소 출력

그럼 이번에는 선언한 포인터 변수의 *를 없애 그냥 변수로 바꿔보겠습니다.

사진을 보시면 위와 똑같이 주소값을 출력하는 것을 확인할수 있습니다.

(하지만 다른게 있죠 ㅎㅎ 좀더 봐주세요.)

일반 정수형 변수 출력

이번에는 printf에 있는 p에 *를 붙여보겠습니다.

*를 뺀 p에서는 오류가 나면서 돌아가지 않지만 포인터 변수p에서는 i의 값인 999를 출력합니다.

포인터변수와 변수

p는 i의 주소값을 가지고 있기에 i의 값이 변하면 *p의 값도 변하는 것을 확인할 수 있습니다.

*p의 예시

이렇게 되는 이유는 p가 i를 가리키기 때문입니다.

포인터로 이렇게 되는 이유

p가 i를 가리키기 때문에 역으로 이런것도 가능합니다.

p가 가리키는곳에 p가 가리키는것+2를 했기 때문에 이렇게 12가 나옵니다.

포인터를 사용해 가능한일

포인터를 사용한 예시

아래 글을 들어가시면 포인터를 사용한 예가 있습니다.

[C] - c언어 포인터를 사용해 만든 swap함수 문자와 문자 숫자와 숫자 값을 변경

위 내용만 아신다면 왜 저렇게 나오는지 이해하실 수 있을겁니다.

Designed by JB FACTORY