디시인사이드 갤러리

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

갤러리 본문 영역

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

에라(118.218) 2009.07.18 22:55:48
조회 54 추천 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/06/10 - -
이슈 [디시人터뷰] 웃는 모습이 예쁜 누나, 아나운서 김나정 운영자 24/06/11 - -
151736 으앜.. 확실히 정해츰.. [5] 김주현갤로그로 이동합니다. 09.10.10 80 0
151735 2005에서 에러 찾는 단축키가 뭔가요;;? [3] 뉴비(121.139) 09.10.10 45 0
151734 2D 비행슈팅게임 소스 하나 구할수 있을까요? [5] 72(166.104) 09.10.10 288 0
151733 지금 슈퍼스타K 보고 있는데... [2] 물속의다이아갤로그로 이동합니다. 09.10.10 81 0
151731 !소환 혼아 [6] 김주현갤로그로 이동합니다. 09.10.10 60 0
151730 한국대학에서 SIGGRAPH에 나온 논문 링크 좀 걸어봐라 [3] grunt(206.47) 09.10.09 75 0
151729 자료구조좀 하는 심심한 형들좀 봐주세요 [1] ㅁㄴㅇㄹ(222.120) 09.10.09 63 0
151728 니네도 자바다 닷넷이다 염병들 그만 떨고 이런 거나 해라 [7] 삭니2(124.56) 09.10.09 183 0
151727 벌써 12시 다되가네 -_-;;;; - Canta Per Me [2] DMW(220.68) 09.10.09 57 0
151726 벌써 한골 먹었어 [1] CP(118.221) 09.10.09 16 0
151725 파일 카피할 때 [9] clique갤로그로 이동합니다. 09.10.09 100 0
151724 좋은 아침입니다 [11] algo갤로그로 이동합니다. 09.10.09 86 0
151723 저 일요일에 컴공 면접가는데 질문하나만요...ㅠㅠ [23] 도와줘,,(123.215) 09.10.09 213 0
151722 헐........ [3] 참치갤로그로 이동합니다. 09.10.09 33 0
151721 전에 새 프로젝트가 생성이 안된다는 뉴비입니다. 뉴비(121.139) 09.10.09 41 0
151720 퇴갤을 알리는 존나 빵 터진 짤 [2] 숙신갤로그로 이동합니다. 09.10.09 84 0
151719 프로그램 하겠다고하면 꼭 하지 말라고 하더라 ㅋㅋ [6] 김ㅋ_ㅋ갤로그로 이동합니다. 09.10.09 107 0
151718 vim 키맵 짤방 가지고 계신횽 계십니카? [2] 성대아싸(121.137) 09.10.09 54 0
151717 가나는 어디가나 [6] CP(118.221) 09.10.09 56 0
151716 내일 서울 간다능... [4] 아주아슬갤로그로 이동합니다. 09.10.09 46 0
151715 11:15분 가나전 토토해야지 [5] CP(118.221) 09.10.09 45 0
151714 뇌쓰리즈 좋은거 같아 [4] CP(118.221) 09.10.09 78 0
151713 유리한, Heart [7] 참치갤로그로 이동합니다. 09.10.09 76 0
151710 나도 유리한횽, 디-횽처럼 멋진 변태코더가 될거임 [6] 어쩌라는갤로그로 이동합니다. 09.10.09 105 0
151708 공유기 쓰는 형님들 조언좀 [15] 참치갤로그로 이동합니다. 09.10.09 105 0
151707 형들 안녕하세요 꿈많은 어린이인데요 [6] 곰부리냠(58.127) 09.10.09 55 0
151706 저따윈 없더라도 프갤은 언제나 그렇듯.. (늅늅) [11] Aray갤로그로 이동합니다. 09.10.09 90 0
151705 요즘 질문하는 분들 왜이럼? [7] 숙신갤로그로 이동합니다. 09.10.09 83 0
151704 유식이가 70억원 해먹었네 [1] 이모군(110.8) 09.10.09 108 0
151703 스미골햏만 봐라. 조공플머(121.139) 09.10.09 85 0
151702 횽들 내가 부른노래야. [11] 김주현갤로그로 이동합니다. 09.10.09 126 0
151701 10.1인치에...1366x768해상도 써보신분? [2] [(115.140) 09.10.09 106 0
151699 횽들 질문하나만 해보자. [10] 김주현갤로그로 이동합니다. 09.10.09 82 0
151697 나사에서 달에 물있나 실험한데 [5] DMW(220.68) 09.10.09 133 0
151696 ㄴㅇㄹㅇㅀ 님은 봅니다. 숙신갤로그로 이동합니다. 09.10.09 32 0
151695 연화나와라~ 아니면 대전사는사람 나와라~ [2] 씬입사원갤로그로 이동합니다. 09.10.09 94 0
151694 존나할거없네 님은 봅니다. [2] 숙신갤로그로 이동합니다. 09.10.09 67 0
151693 형들~ 프로젝트 투입때메 회계공부해야되는데요~~ 코프(121.131) 09.10.09 36 0
151692 구하라는 콘돔을 끼구하라 [5] 유리한갤로그로 이동합니다. 09.10.09 583 0
151691 회계 수업 듣다보면 월급쟁이는 답이 없는 거 같다. 조낸 암울하다. [2] 사업질문(58.79) 09.10.09 105 0
151690 책 한 권 팔면 저자한테 몇 % 들어오나요?? 궁금 [3] 책값질문(58.79) 09.10.09 119 0
151689 나도 프로그램 할랭 ^ㅛ^ [3] 김ㅋ_ㅋ갤로그로 이동합니다. 09.10.09 110 0
151688 정신분열증인데 프로그래머 할 수 있나요? [14] quack(124.153) 09.10.09 236 0
151687 방금 찍은 짤임 김주현갤로그로 이동합니다. 09.10.09 110 0
151685 c++ 에러뜨는데 어딘지 못찾겠어 ㅠ [4] 존나할거없네갤로그로 이동합니다. 09.10.09 90 0
151684 한국 대법원, "한국은 마소의 노예" 인정 [2] 케케켁켁갤로그로 이동합니다. 09.10.09 166 0
151682 형들 c++문제인데.. [1] ㄴㅇㄹㅇㅀ(203.237) 09.10.09 64 0
151681 김유식 좆망 케케켁켁갤로그로 이동합니다. 09.10.09 115 0
151679 일단 회원가입창만... [1] 캐꼬꼬닭(112.216) 09.10.09 61 0
151678 프로그래머로서 보안분야는 어떻습니까? [6] 학생(125.128) 09.10.09 217 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2