디시인사이드 갤러리

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

갤러리 본문 영역

오어어ㅗ오오 백수 1년차님 정말 감사

에라(118.218) 2009.07.18 22:55:48
조회 51 추천 0 댓글 2

그냥 아는만큼만 끄적여볼께..

 int a[3][2] = {
  {1, 3},
  {10, 4},
  {5, 6}
 };
  //////////////////////////////////////////////////////////////////////////
 printf("a : %d \\n", a);     // 배열의 시작주소
 printf("a+1 : %d \\n", a+1);    // 세로로 이동하니 정상적인 8byte
 printf("a+2 : %d \\n", a+2);
 printf("a[0] : %d \\n", a[0]);
 printf("a[1] : %d \\n", a[1]);
 printf("a[2] : %d \\n", a[2]);   // 정상적인 8byte
 printf("--------------------------\\n");
 //////////////////////////////////////////////////////////////////////////
여기에서 a는 2차원 배열의 이름이지...배열의 이름은 배열 첫번째 시작주소값을 가지고있다는건 알거야...
하지만 여기서 중요한건.. 그 참조 범위가 어디까지인가가 중요해...
(한마디로 주소값을 가지고 연산을하면 (예 : 주소값 + 1)하면 그 주소값의 타입크기만큼 증가하는거야.
예를 들어보면 int *a = &b라고있다고 치자... a는 b라는 어떤 인트형변수의 주소값을 담고있겠지...(인트는 4바이트라는 가정하에...)
여기서 a + 1을 하면 얼마나 증가할까? 주소연산이기때문에 인트형 크기만큼 증가할꺼야 만약 a의값이 100이라면 a + 1은 104가 되겠지.

그럼 다시 위로 돌아가보면... a[3][2]의 a는 어떤 타입을 가질까? 그냥 일반 인트형??? 물론 1차원 배열일경우는 일반 인트형처럼 되지만
다차원으로 가면 달라져..
배열 구조를 보면 a[0]번째는 총 8바이트를 가지고있어(a[0][0], a[0][1]) 각 인트요소마다 2개의 인트형변수를 가지고있으니까..
한마디로 a의 타입이라고 하긴 뭐하지만 증가연산시크기(8바이트)만큼 증가한다는거야..
a[3][2]의 배열은 a[3]인 배열인데 각 요소의 크기는 8바이트이고 그 요소들은 2개로 쪼개져있다 라고 해석할수도있지.

그래서 a+1은  8바이트증가. a+2는 8+8 = 16증가가 되겠지.

 ////////////////////////////////////////////////////////////////////////// 
 printf("&a : %d \\n", &a);    // 배열의 시작주소는 언제나 똑같군
 printf("&a+1 : %d \\n", &a+1);   // 엄청난 주소 뻥튀기 왜이러지..
 printf("&a+2 : %d \\n", &a+2);   // 24byte나 차이가 나네..
 printf("--------------------------\\n"); // 어떤 이유이지?
  ////////////////////////////////////////////////////////////////////////// 
이 경우는 나도 좀 애매해
아마 생각에는 a는 어떻게 보면 하나의 변수자나...근데 그 변수의 크기가 3 * 2배열이라는거지 즉...3*2*4(byte)해서 총 24바이트라는거야..
그럼 위에처럼 생각해보면 &a를 주소연산 해보면 a의 크기만큼 증가가 되겠지?
&a+1을 하면 a의 크기인 24바이트만큼 증가한다는걸 알수있어 
&a+2면 42바이트겠지?

 ////////////////////////////////////////////////////////////////////////// 
 printf("*a : %d \\n", *a);          // 시작주소는 언제나 똑같군  
 printf("*a+2 : %d \\n", *a+2);           // 음 4byte로 줄어들었네..
 printf("*a+1 : %d \\n", *a+1);   // 어떤 이유이지?
 printf("--------------------------\\n");
  ////////////////////////////////////////////////////////////////////////// 
이번 경우는 *a인데...이거는 a가 가르키는 곳을 따라가라 인데...
*a를 한번따라가면 또 주소값이 나온다는거야..하지만 이경우는 다른데 *a는 다시말해서 *(a+0)으로 표현할수있지
즉 *a == *(a+0) == a[0]으로 된다이거지... 그럼 위에 소스를 좀 바꿔보면
a[0] + 2라는거야... 자 여기서 a[0]은 요소를 2개가지고있는 배열의 시작주소이지..
a[0]+2는 한마디로 &a[0][1]이 되는거여.....a[0]으로부터 +2만큼 주소연산을 하라는거니까...

a[0][1](+1), a[1][0](+2) - 이거는 요소가 오버되서 다음 요소로 넘어간거..-가 되지.
즉....&a[0][1]의 값은 a[0](*a)의 값보다 8바이트 증가한 값이겠지..
////////////////////////////////////////////////////////////////////////// 
 printf("**a : %d \\n", **a);             // 엥 한번더 참조하니깐 값이 나오네 값 1
 printf("**a+1 : %d \\n", **a+1);         // 값  2
 printf("**a+2 : %d \\n", **a+2);         // 값  3  왜 1 2 3을 출력할까? ㅠ
 printf("--------------------------\\n"); // 어떤 이유이지?
////////////////////////////////////////////////////////////////////////// 
이번 꺼는 참 단순한건데 **a는 *(*(a+0)+0)으로 해석이 가능하지...즉 a[0][0]이야....
그냥 a[0][0]의 값을 출력하겠지..(주소값이 아님)
그래서 1이나오고 1에다 +1 하면 당연히 2가나오고 +2하면 3이나오겠지?

////////////////////////////////////////////////////////////////////////// 
 printf("**a : %d \\n", **a);             // 괄호를 하면 값 재대로 나오네..  1      
 printf("**(a+1) : %d \\n", **(a+1));     // 값 재대로 나오네.. 10
 printf("**(a+2) : %d \\n", **(a+2));     // 값 재대로 나오네.. 5
 printf("--------------------------\\n"); // 어떤 이유이지?
 ////////////////////////////////////////////////////////////////////////// 
이거는 해석하는건데...**(a+1)을 순차적으로 해석해보자...
*(a+1)일단 이거부터 해석하면 a[1]이고 즉 *a[1]이 되겟지? 이걸 또 풀이해보면 *(a[1] + 0)이 되지..즉 a[1][0]번째 요소를 출력하라 이거임..
자 그럼 밑에꺼도 똑같은 방법으로 해보면 **(a+2)는 a[2][0]번째 요소 출력이되겠지?

 //////////////////////////////////////////////////////////////////////////  
 printf("*a[0] : %d \\n", *a[0]);   // 시작주소는 언제나 똑같군
 printf("*a[1] : %d \\n", *a[1]);         // 왜 이렇게 하면 값이 출력 될까?
 printf("*a[2] : %d \\n", *a[2]);         // 어떤 이유이지?
  ////////////////////////////////////////////////////////////////////////// 
이거는 말안해도 위에껄 참조하면 알꺼야...
}

나도 이게 맞는지는 몰라 ..그냥 내 추측인데...이 추측으로 인해 잘못된 정보가 전달될까봐 많이 걱정된다..

아무튼...내가 이해하는대로 적어봤어...

내가 설명을 잘 못해서....주절주절 두서가없어....아마 쉬운것도 이해하기 난해하게 적어놔서...도움이 될지는 모르겠다..

ps.만약 틀리다면 태클을 달아주세요~ 저도 올바른 지식을 쌓기위해 이렇게 끄적여봅니다.





-------------------------------------------------------------------------------------------------------
이제 발견함 차례차례 잘 볼깨요 감사함니다 ㅋㅋ

추천 비추천

0

고정닉 0

0

댓글 영역

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

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 어떤 상황이 닥쳐도 지갑 절대 안 열 것 같은 스타는? 운영자 24/05/20 - -
145722 이번엔 jsp페이지 노출 문제!! [17] 부락페스티발갤로그로 이동합니다. 09.08.31 117 0
145721 너님들 이런적없츰?? [2] 개쉛기갤로그로 이동합니다. 09.08.31 114 0
145720 MD5 복호화가 안된다고? [9] LightEach갤로그로 이동합니다. 09.08.31 163 0
145718 잘생긴애들이 모질게 대하면 나쁜남자 [2] 개쉛기갤로그로 이동합니다. 09.08.31 134 0
145717 좋아할일인가.. 슬퍼할일인가.. [1] DyNast(220.81) 09.08.31 101 0
145716 님들은 몇점짜리 남자? [11] DyNast(220.81) 09.08.31 131 0
145714 jsp 보안 문제염 [9] 부락페스티발갤로그로 이동합니다. 09.08.31 132 0
145713 늬들은 어떤 마이드로 프로그램 만드냐 ? [14] yundream(211.189) 09.08.31 224 0
145712 커널 모드라면서 데몬 이미지 마운트가 안되는데 왜이러는건지;; ㅁㄴㅇㄹ(58.127) 09.08.31 43 0
145711 달팽이 GG 선생님의 모범답안 [4] 신발라마갤로그로 이동합니다. 09.08.31 265 0
145708 달팽이 졸 어렵네... [4] 신발라마갤로그로 이동합니다. 09.08.31 127 0
145706 나도 답답합니다. 한번만 더 질문할께요. [11] 라클자바갤로그로 이동합니다. 09.08.31 103 0
145705 횽들 질문이 있어.... (결혼 관련..) [8] 게지라(221.138) 09.08.31 99 0
145704 니꼴 [1] 유리한갤로그로 이동합니다. 09.08.31 81 0
145703 뻘글 관심시전갤로그로 이동합니다. 09.08.31 63 0
145702 코딩할때 폰트 뭐쓰심니까 [12] 1(143.248) 09.08.31 211 0
145701 45세 현업 개발자 ㅇㅇ [6] Tathagata갤로그로 이동합니다. 09.08.31 263 0
145700 교통사고 목격자 진술하고 왔다 [3] Q Lazzarus갤로그로 이동합니다. 09.08.31 192 0
145698 사회진출 횽 들 혹은 배우고있는횽들 질문점할게 [2] 난뉴비(58.120) 09.08.31 57 0
145697 웹프로그래머 선배님 급질좀 올리겠습니다. [11] 라클자바갤로그로 이동합니다. 09.08.31 169 0
145696 0.001보다 이상의 수를 얻기 [8] Vita500갤로그로 이동합니다. 09.08.31 107 0
145695 프겔에서는 FLEX는 안쳐줌? [1] 존뉴(211.104) 09.08.31 73 0
145692 오늘 학교를 갔어... [3] 혼아갤로그로 이동합니다. 09.08.31 100 0
145691 본사에 복귀하니 프갤할 시간이 통 없구나 [3] 천회장(125.7) 09.08.31 62 0
145690 운동을 심하게 하니까.. [4] yundream(211.189) 09.08.31 122 0
145689 란제리 와 비키니 의 우선 순위는? [1] rntjr갤로그로 이동합니다. 09.08.31 110 0
145688 비키니 와 횽의 우선 순위는? [1] rntjr갤로그로 이동합니다. 09.08.31 64 0
145685 비키니에서 란제리까지 rntjr갤로그로 이동합니다. 09.08.31 70 0
145684 9월 5일 역사적인 순간이 다가옵니다. 씬입횽의 서울입성!! [11] Vita500갤로그로 이동합니다. 09.08.31 136 0
145681 웹프로그래머가 대세인거같아 [3] CP(118.221) 09.08.31 151 0
145679 mysql query browser 사용하는횽 있냐능 [2] 세브(211.117) 09.08.31 75 0
145678 요새 자꾸 침대에 누우면.. [4] 개쉛기갤로그로 이동합니다. 09.08.31 144 0
145677 남자는 할 때는 해야한다능 [1] 분당살람갤로그로 이동합니다. 09.08.31 119 0
145675 캐꼬 [2] 유리한갤로그로 이동합니다. 09.08.31 68 0
145674 이 sql 구문 뭐가 잘못되엇나효 [3] sqler(211.253) 09.08.31 73 0
145672 난 어제 200회 토익보구왔는데... 항상 여자가 문제구나 [5] 크로메데(112.150) 09.08.31 189 0
145671 화를 낼까 웃어버릴까 [1] 유리한갤로그로 이동합니다. 09.08.31 126 0
145670 콘푸레이크가 욕망을 억제한다는 말을 듣고 실행해보았다. 개쉛기갤로그로 이동합니다. 09.08.31 135 0
145669 회사에 취업해도 새로 배운다고 하던데 사실임 [6] 목소리(121.174) 09.08.31 210 0
145667 흠,,,진지하게 [1] 홍석천의눈길갤로그로 이동합니다. 09.08.31 73 0
145666 살람들이 여유가 없으면 안된다. yundream(211.189) 09.08.31 70 0
145665 닷넷 책좀 추천해줘 횽들 마우스.갤로그로 이동합니다. 09.08.31 37 0
145664 코딩 스타일좀 봐줘 형들... [5] 맥콜(125.188) 09.08.31 162 0
145663 비타님 다음번 슈팅강좌에서 다뤄줬으면 좋겠다능 [2] 화나(58.237) 09.08.31 59 0
145662 어제 기사 시험 보고 왔음 [3] 은행강도갤로그로 이동합니다. 09.08.31 88 0
145661 웹플은 좀 재미없는게 [6] 부락페스티발갤로그로 이동합니다. 09.08.31 138 0
145660 여기있는 분은 프로그래밍의 천재일지도... [5] 목소리(121.174) 09.08.31 180 0
145658 컴퓨터공학이라는 입장이 우세한 이유 [1] yundream(211.189) 09.08.31 162 0
145656 으앜 가채점 61점 ㅋㅋㅋ 허경영!! 허경영!! [2] 맥콜(125.188) 09.08.31 155 0
145655 좆같은 PM [1] 醉生夢死...갤로그로 이동합니다. 09.08.31 128 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2