새소식

컴퓨터공학 💻/C

C 프로그래밍 (13) - 포인터 pointer

  • -

포인터는 기본적으로 C언의 강력한 무기이다. 포인터는 어떤것들을 가리키는, 즉 특정한 데이터가 저장된 메모리 주소를 저장하는 변수이다. 어떤 데이터의 주소 그 자체를 가리키기 때문에 이것을 응용해 다양한 연산이 가능하다. 

프로그램의 어떠한 위치에서 시행되더라도 특정한 주소를 그대로 이용하기 때문에 즉시 값이 변경된다. 

 

temp는 포인터 x가 가리키는 위치에 값을 넣어준다. 즉 x라는 포인터가 가리키는 특정한 위치에 있는 값을 가져와서 temp에 넣어주는 것이다. 

그다음 x가 가리키는 값을 y가 가리키는 값으로 바꿔주고 y가 가리키는 값에 temp를 넣어주면 완벽히 swap이 이루어진다. 

 

메인함수에 swap함수를 가져와 매개변수로 x와 y의 주소를 입력해주면 x와 y의 값이 바뀐 것을 볼 수 있다. 

 

만약 포인터 *를 없애고 출력을 해보면 값이 바뀌지 않게 된다.

 

 

 

 

int x = 10;

int *y = &x;

 

일 때 메모리에는 70의 값을 가진 x라는 변수가 데이터로 메모리의 어느 부분에 저장이 된다. 

그다음 포인터y가 가리키는 것이 x의 주소이므로 x의 주소를 예를 들어 OOAAOOBB라는 값을 가지게 된다. 

 

y의 값은 x의 주소인 OOAAOOBB 가 되며 포인터 y는 y가 가리키는 값을 의미하므로 x값인 70이 된다. 

다시 말해 x = *y 이며 &x = y 인 것이다. 

 

i값은 10이며 포인터p가 가리키는 값이 i가 되었다.

그다음 포인터p가 가리키는 주소의 값을 20으로 바꾸니 i가 20으로 바뀐 것을 볼 수 있다. 

 

 

 

 

 

 

이 글은 프로그래머 나동빈님의 강의 내용을 개인적인 학습을 목적으로 정리하여 쓴 글임을 밝힙니다. 
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.