게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
C언어 이중포인터
게시물ID : programmer_20826짧은주소 복사하기
작성자 : Simmons
추천 : 0
조회수 : 766회
댓글수 : 2개
등록시간 : 2017/06/14 12:43:42
옵션
  • 창작글
  • 베스트금지
  • 베오베금지
  • 본인삭제금지
제가 이중포인터를 공부하는데 헷갈리는부분이 있어서요

캡처.PNG
일단 이것이 일반 포인터만 사용해서 주소값을 바꿀려고 시도했습니다.

function call before[address]: 61abd4, 61abd0
function call before[value]  : 100, 200
function internal [address]: 61abd0, 61abd4
function internal [value]: 200, 100
function call after[address]: 61abd4, 61abd0
function call after[value]  : 100, 200

그럼 당연히 swap에서는 바뀌지만 main 안바뀝니다.
왜냐하면 address value를 줬기때문이죠
그래서 swap 내부안에서 주소값을 swap한다해서 main에 포인터변수에는 영향을 줄수없는것이고요

하지만
이중포인터를 사용하면

캡처2.PNG
function call before[address]: 61abdc, 61abd8
function call before[value]  : 100, 200
function internal [address]: 61abd8, 61abdc
function internal [value]: 200, 100
function call after[address]: 61abd8, 61abdc
function call after[value]  : 200, 100

이런식으로 서로 swap에서도 main에서도 포인터변수안에 주소값이 서로 바뀌게됩니다.
왜냐하면 이중포인터를 써서 main에 있는 포인터변수에 있는 주소값을 가져온것이 아니라 포인터변수의 주소를 가지고왔기때문이죠
그래서 *pi01 = pivalue01의 기억공간이 되는거죠 그래서 직접 pivalue01포인터변수에 있는값을 이중포인터로 이용하여 변경시킨다

라고 이해하면 될까요?
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호