디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

님들 제가 생각해낸 포인터 공부방법 평가점 ㅋㅋ

다들알겟지만(211.104) 2011.08.31 17:24:51
조회 106 추천 0 댓글 4

혼자 고민고민하다 생각해냇음 포인터 공부할때 힘들어하는사람들에게 가르쳐주면

좋을것같음 실제로 동기한테 설명했더니 이해가 엄청 잘된다고 했었음

포인터는 어떠한 변수의 주소값이다

int a=10;
int *a1=&a;라고 하면

a1는 a의 주소값이고 *a1은 주소값이 가진 값 즉 a인 10이다   //여기까지가 기본적인 포인터지식

C언어를 처음 배우면서 swap함수라는것을 만들어 보게 될텐데 포인터 연산을 아주 쉽게 해낼수 있는 방법이 있다

3중이나 4중 포인터로 보여줄수도 있겠으나 편의상 2중포인터로 설명하겠음

swap(int **a,int **b)
{
    자 여기를 어떻게 채울까
}
일단 메인함수를 보겠다

int main()
{
    int ap=10,bp=20;
    int *ap1=&ap, *bp1=&bp;        //여기를 잘보면 ap의 포인터 ap1을 선언햇음을 알수있다
    swap(&ap1,&bp1);                //&의 연산의 의미는 C언어에서 주소값을 반환함을 의미한다 고로 swap함수의 매개변수는
}                                                  1중포인터의 주소값을 전달햇으므로 2중 포인터가 된다 그래서 매개변수가 **a인것이다

이제 스왑함수의 몸체를 채워볼껀데 일단 스왑함수 호출전의 가리키는 현황인데 2중포인터를 이용해서
(ap <- ap1 <- &ap1 를 ap <- bp1 <- &bp1)              1중포인터가 가리키는 주소를 바꿔치기 할 것이다.
(bp <- bp1 <- &bp1 를 bp <- ap1 <- &ap1)           <----- 실제로 가리키게되는게 요렇게 바뀐다.

우선 임시자료인 temp(옴겨담을 그릇)를 선언을 할것인데 앞서말했든 이중포인터가 가리키는 값(일중포인터가 가리키는 주소)을 바꿀것이기 때문에 템프를 int *temp; 로 선언을 한다        이제부터 가장 중요한 스킬인 포인터 안 햇갈리는 방법을 가르쳐주겟다
이중포인터가 가리키는값은 1중 포인터이기때문에 temp에 *이 하나만 붙는것이다.

스왑함수의 매개변수 **a를 보겠다 앞서 말했듯 별을 붙이면 그 주소가 가진 값을 의미한다 고로

**a 는 메인함수의 ap를 의미한다
<정 리>
매개변수 a == &ap1(메인함수의 ap1의 주소값)
매개변수 *a == ap1(메인함수의) == &ap(메인함수의)
매개변수 **a == ap(메인함수의)

보다시피 매개변수에 하나도 별을 안붙엿을경우 메인에서 swap함수에 넣었던 &ap1이 들어간다

여기서 별을 하나씩 붙일때마다 가리키는 주소값이 가진 값을 의미하게 된다

이것으로 swap 함수를 만들어보면

void swap(int **a, int **b)
{  
    int *temp=*a;
    *a=*b;
    *b=temp;
} 가 되는것이다
*a는 정리에서 보다시피 ap1 즉 ap의 주소값과 같으므로 1중포인터가 된다

일중포인터를 스왑할것이기에 임시변수도 *temp가 되는것이다.

스왑함수 호출뒤 *ap1,*bp1 을 출력해보면 20 10 으로 값이 뒤바뀐것을 확인할수있다

이해를 했다면 3중 4중포인터로도 연습을 해보면 좋을것같다

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 축의금 적게 내면 눈치 줄 것 같은 스타는? 운영자 24/11/11 - -
284651 fta되면 한국 it는 어찌 되는건가염?? [4] 거칠게갤로그로 이동합니다. 11.10.30 137 0
284650 내가 이럴때가 아닌데.... [4] 땡칠도사갤로그로 이동합니다. 11.10.30 94 0
284649 비주얼베이직으로 5분에한번씩 특정키 누르기 [11] 마루(124.58) 11.10.30 118 0
284648 오늘의 프갤은 덕짤갤이다(조공 추가) [18] System32갤로그로 이동합니다. 11.10.30 278 0
284647 비주얼베이직쫌 만지는분 도와주세요 [1] 비주얼(187.164) 11.10.30 67 0
284646 ((현상금20만원))카드번호 노가다로 알아내줄 사람? [21] 널그리당(183.102) 11.10.30 171 0
284645 Octave [2] 땡칠도사갤로그로 이동합니다. 11.10.30 96 0
284644 나나미 땡칠도사갤로그로 이동합니다. 11.10.30 58 0
284643 시간이 지날수록 의욕이 없어진다... [4] SPlCA갤로그로 이동합니다. 11.10.30 91 0
284642 헥세인! 땡칠도사갤로그로 이동합니다. 11.10.30 335 0
284641 원래 플밍 동영상 강의 안 보는데 안드는 [3] 로하로하알로하갤로그로 이동합니다. 11.10.30 78 0
284639 헵타그램! 땡칠도사갤로그로 이동합니다. 11.10.30 48 0
284637 쿼드로마 [2] 땡칠도사갤로그로 이동합니다. 11.10.30 103 0
284636 트리고노메트리!!!! 땡칠도사갤로그로 이동합니다. 11.10.30 93 0
284635 레알 이놈의 프로젝트.... 땡칠도사갤로그로 이동합니다. 11.10.30 80 0
284634 덕짤타임 [1] 땡칠도사갤로그로 이동합니다. 11.10.30 81 0
284633 C++ 이 헤더에 tm이라는 변수가있나요?? [2] Hellions갤로그로 이동합니다. 11.10.30 59 0
284632 헑헑 이게 바로 이클립스 라는건가예 [5] 로하로하알로하갤로그로 이동합니다. 11.10.30 122 0
284629 요가를 하면 욕구불만이 해결되서 플밍을 잘 할 수 있을 것 같다.jpg [1] ㅇㅇ(222.107) 11.10.30 85 0
284628 밑에 리눅스 슬랙으로 가라는데 로하로하알로하갤로그로 이동합니다. 11.10.30 53 0
284627 횽들 2d겜 플밍 정말 간단한거 좀 알려줘 ㅠㅠ [2] 어린화공갤로그로 이동합니다. 11.10.30 54 0
284626 이게 가능한 횽들 이씀? [20] 로하로하알로하갤로그로 이동합니다. 11.10.30 173 0
284625 iOS5 터치 로하로하알로하갤로그로 이동합니다. 11.10.30 48 0
284624 아오 아침부터 쵸빡쳐! 쵸쵸춏! 쵸쵸(219.251) 11.10.30 32 0
284623 나 토익시험보는데 시험 아직도 안끝나서 [1] 금고래갤로그로 이동합니다. 11.10.30 41 0
284618 알고리즘 마스터정리 관련!! 디스토피언s갤로그로 이동합니다. 11.10.30 1189 1
284617 이렇게 하면 [6] 디클로로메탄갤로그로 이동합니다. 11.10.30 118 0
284616 아놔 더블릿 실행시 인자로 넘겨주는줄 알았더니 ?(118.218) 11.10.30 36 0
284615 오늘도 코딩에 미친 프갤러들은 밥을 새어 박스노트갤로그로 이동합니다. 11.10.30 60 0
284614 성균관대아웃사이더님 더블릿 감사합니다 [3] ?(118.218) 11.10.30 95 0
284613 디클로로메탄은 원자단위로 쪼개지지말고 봅니다 [4] ?(118.218) 11.10.30 71 0
284611 아 진짜 미치겠다 [16] 디클로로메탄갤로그로 이동합니다. 11.10.30 164 0
284610 궁금한데 임베디드 시스템은 뭐하는거여?? [2] 잉여잉간(110.76) 11.10.30 121 0
284609 횽들 unix 줄바꾸는 문자좀 질문할께 [2] 잉여잉간(110.76) 11.10.30 70 0
284607 와 지식인에서 허접한 코드 연습하면서 내공쌓고있는데 [2] ?(118.218) 11.10.30 75 0
284605 참치 ㅆㅂ.... [2] 이문동쮸쮸바갤로그로 이동합니다. 11.10.30 58 0
284603 가우스 조단 소거법짜는 숙제 다했당 ㅎㅎ [3] 저격甲갤로그로 이동합니다. 11.10.30 338 0
284601 근데 SI가 뭐하는 회사예얌? [4] 알오티씨플머갤로그로 이동합니다. 11.10.30 141 0
284600 횽들은 10초만에 답할 수 있는거 질문(if-else문) [5] schizoid322갤로그로 이동합니다. 11.10.30 86 0
284599 CF 노래 유러피언 i40 프리미엄? 로하로하알로하갤로그로 이동합니다. 11.10.30 25 0
284598 형들 혹시 카티아 할줄 아는 형 있어?? 달려(58.148) 11.10.30 41 0
284597 모바일 위치 API 하고 안드 개발 질문 좀 [15] 로하로하알로하갤로그로 이동합니다. 11.10.30 93 0
284596 형들 객체지향에대한 개념이 너무 안잡혀서;; [25] 三didas갤로그로 이동합니다. 11.10.30 181 0
284593 prologs는 해보고 프로그래밍이 어렵다고 해야지 [3] 전간디갤로그로 이동합니다. 11.10.30 101 0
284592 컴퓨터쪽으로 일하고 싶어서 c언어부터 공부하고있는 꿈나무입니다 [3] ㅂㅈㄷㄱ(180.70) 11.10.30 142 0
284591 솔직히 자바 [7] 로하로하알로하갤로그로 이동합니다. 11.10.30 148 0
284590 가끔 이런 생각이 들 때가 있어 [4] 분당살람갤로그로 이동합니다. 11.10.30 100 0
284589 운영체제가 계속 해서 바뀌는데 [1] 막장갤신학생갤로그로 이동합니다. 11.10.30 73 0
284588 iOS 5 업글햇는데 [2] 로하로하알로하갤로그로 이동합니다. 11.10.29 38 0
284587 도와주세요 ㅠㅠ [9] 닥회드(180.71) 11.10.29 77 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2