다루두루

블로그 이미지

차케요

공부하면서 정리하는 노트같은 블로그입니다.

C언어 독학 포인터 연산

C언어 알고리즘 2015. 8. 23. 16:11

C언어 독학 포인터 연산


포인터는 변수의 메모리 주소를 저장하는 것입니다. 그렇다면 이 포인터 변수를 증가 또는 감소하면 어떻게 될까요? 포인터 변수에 저장된 건 메모리 주소이기 때문에 해당 자료형의 크기만큼 증가 또는 감소하게 되는데요. 예를들어 int형 포인터라면 1을 더하면 4byte 만큼 값이 변경 되는 것입니다. 예제에서 확인해볼게요.

 

▲ 요소가 세 개인 int형 배열 a를 선언하고 각각의 값을 초기화하고 있으며 포인터 변수 b에 그 주소를 저장하고 있습니다. 그리고 그 주소를 확인하기 위해서 printf() 함수로 주소를 출력하고 있는데요. 0015F9E4 이네요. 그리고 이 주소를 저장하고 있는 포인터 변수 b에 +1을 해봤습니다. 그랬더니 정확하게 4byte가 증가하는군요. 이 4byte가 증가한 이유는 int형 포인터 이기 때문입니다. 만약에 double이라면 8byte가 증가하겠죠? 확인해보겠습니다.

 


▲ 변수와 포인터 모두 자료형만 double로 변경해봤습니다. 그리고 역시 1을 더해봤는데요. 주소가 8byte 증가한 걸 확인할 수 있습니다. 이렇게 포인터 변수를 증가, 또는 감소시키면 그 값에 자료형을 곱한 크기만큼 값이 증가 또는 감소하게 됩니다. 


 그럼 다음과 같은 연산의 차이점은 뭘까요?

int * b=...;

*(++b)=100;

*(b+1)=100;


■ 두 가지 모두 포인터 변수 b가 가리키고 있는 메모리에서 4byte 증가한 곳에 100을 대입하는 문장입니다. 하지만 연산 후의 b의 값에 변화가 있고 없고의 차이가 있는데요. 첫 번째 (++b)는 연산의 결과로 인해서 b에 저장된 주소 자체가 4byte 증가한 값으로 변경됩니다. 하지만 (b+1)은 b의 값 자체가 바뀌는 게 아니고 4byte 증가한 주소를 이용해서 연산을 진행할 뿐이기 때문에 b의 값이 바뀌지는 않습니다. 참고사항으로 정리해봤구요. 이렇게 해서 포인터 연산의 기본 개념을 정리해봤습니다.

저작자표시 비영리 변경금지 (새창열림)
Posted by 차케요

    최근...

  • 포스트
  • 댓글
  • 트랙백
  • 더 보기

카테고리

NEW (900)
아이폰 개발 기초 (7)
취미 (16)
아두이노 (16)
[안드로이드] 어플만들기 (77)
안드로이드 기초 다지기 (61)
슈팅게임 만들기 (4)
[JAVA]자바 공부하기 (48)
C언어 알고리즘 (61)
[Unity3D]유니티3D 강좌 (7)
컴퓨터 (325)
포토샵CS2 강좌 (6)
유용한 프로그램 (244)
리눅스 노트정리 (22)
임베디드 리눅스 (11)
New블로그 (9)
음식의 효능 (4)
일반상식 (56)
HTML 공부 (40)
포토샵 공부 (36)
엑셀 (6)
파워포인트 공부 (19)
노트정리 (38)
일상 (33)
TV영화 (85)
방명록 : 관리자 : 글쓰기
차케요's Blog is powered by daumkakao
Skin info material T Mark3 by 뭐하라
favicon

다루두루

공부하면서 정리하는 노트같은 블로그입니다.

  • 태그
  • 링크 추가
  • 방명록

관리자 메뉴

  • 관리자 모드
  • 글쓰기
  • NEW (900)
    • 아이폰 개발 기초 (7)
    • 취미 (16)
      • 아두이노 (16)
    • [안드로이드] 어플만들기 (77)
      • 안드로이드 기초 다지기 (61)
      • 슈팅게임 만들기 (4)
    • [JAVA]자바 공부하기 (48)
    • C언어 알고리즘 (61)
    • [Unity3D]유니티3D 강좌 (7)
    • 컴퓨터 (325)
      • 포토샵CS2 강좌 (6)
      • 유용한 프로그램 (244)
    • 리눅스 노트정리 (22)
      • 임베디드 리눅스 (11)
    • New블로그 (9)
    • 음식의 효능 (4)
    • 일반상식 (56)
    • HTML 공부 (40)
    • 포토샵 공부 (36)
    • 엑셀 (6)
    • 파워포인트 공부 (19)
    • 노트정리 (38)
    • 일상 (33)
    • TV영화 (85)

카테고리

PC화면 보기 티스토리 Daum

티스토리툴바