디시인사이드 갤러리

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

갤러리 본문 영역

[완벽한 설명] 아까 나왔던 배열 얘기 설명해준다.real fact

밍고스사랑해갤로그로 이동합니다. 2016.04.18 21:46:59
조회 1839 추천 13 댓글 10
														

int arr[72], *ptr;

(1) int arr[72]를 선언하면 무슨 일이 생기는가?

int 72칸을 저장할 수 있는 배열이 생긴다.

(2) 배열 이름은 그 배열의 첫 번째 요소를 가리키는 포인터라던데, 그렇다면 그 포인터를 위해서도 따로 공간이 할당되는가?

그렇지 않다. 다른 상수 값과 비슷하다고 생각하면 된다.
예를 들면 int n = 93 * 101;을 한다고 해서 93과 101을 위한 메모리 공간이 따로 할당되지는 않는다.

(3) 배열 이름이 포인터라면, 위의 arr과 ptr의 자료형은 같은 것인가?

배열 이름과 포인터는 다르다. 다만 배열 이름이 몇몇 상황에서 포인터로 암시적인 형 변환(implicit type conversion)을 겪을 뿐이다.
이러한 변환을 붕괴(decay)라고 한다.

(4) 붕괴는 언제 일어나는가?

배열 이름 자체에 sizeof를 씌우거나, 배열 이름 앞에 & 연산자를 붙여 주소를 취할 때는 붕괴가 일어나지 않는다.
웬만한 경우에는 붕괴가 일어난다.

(5) 배열 이름 앞에 &를 붙인 것은 무엇인가?

int n;을 하고 &n을 하면 int에 대한 포인터 (int *)가 나오듯이,
int arr[72];를 하고 &arr을 하면 int [72]에 대한 포인터 (int (*)[72])가 나온다.
이것은 고차원 배열의 요소의 포인터와 같다.

예를 들면 int arr2[9393][72];은 int [72]가 9393개 모인 배열이므로 각각의 포인터의 자료형은 int (*)[72]가 된다.
또한, arr2라고 배열 이름을 사용하면 이것이 붕괴될 때 int (*)[72]로 붕괴된다.

(6) 자료형 (*)[크기]와 같은 문법은 처음 보는데?

기억을 잘 떠올려 보면 2차원 또는 그 이상의 고차원 배열을 함수에 넘겨주는 법을 배울 때 분명히 같이 배웠을 것이다.
이것은 고차원 배열의 이름이 배열을 가리키는 포인터로 붕괴하기 때문이다.

(7) scanf에서 배열 이름 앞에 &를 붙여도 상관이 없었던 이유는?

어차피 scanf는 가변 개수의 인자를 받는 함수라서 자료형 검사가 이루어지지 않고,
시작하는 주소만 같으면 포인터의 값은 변하지 않기 때문이다. 하지만 그런 식으로 사용하는 것은 바람직하지 않다.

char str[72];
scanf("%s", &str); // char *를 넘겨줘야 하는 자리에 char (*)[72]를 넘겨주었다!
printf("%s\n", str);

위와 같이 쓰는 것은 의미상 아래와 비슷하다.

char arr[1][72];
scanf("%s", arr); // char *를 넘겨줘야 하는 자리에 char (*)[72]를 넘겨주었다!
printf("%s\n", arr[0]);

물론 scanf가 아닌 평범한, 함수 원형(prototype)을 통해 자료형 검사가 이루어지는 함수에 이런 짓을 하면 오류가 뜬다.

(8) char *과 char (*)[72]의 동작의 차이는?

1을 더하면 char *는 1바이트 이동하고 char (*)[72]는 72바이트 이동한다.
당연한 거 아냐?

― 끝 ―

viewimage.php?id=3dafdf21f7d335ab67b1d1&no=29bcc427b38477a16fb3dab004c86b6fd0548bb7fdb4d15c44496390cca9d3aeb71f4f812b64b7583626de930d232e030f82be6b32b3c7fa9dec20c51e


귀여운 치하야짤 보고 가라

추천 비추천

13

고정닉 2

6

원본 첨부파일 1

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 며느리, 사위되면 시댁, 처가에 잘할 것 같은 스타 운영자 25/10/13 - -
AD 프로게이머가 될테야!! 운영자 25/10/01 - -
공지 프로그래밍 갤러리 이용 안내 [96] 운영자 20.09.28 47935 65
2896515 입법부가 행정부, 사법부 부패 감시하는 것은 고유임무이자 권한 발명도둑잡기(118.216) 02:13 5 0
2896512 수년 전에 역학 갤러리 모니터링 할 때 내가 관심있던 여성 발명도둑잡기(118.216) 01:56 8 0
2896511 진보당과 당 근처에 경기동부연합이란 조직이 아예 없는데 언론이 발명도둑잡기(118.216) 01:49 9 0
2896510 AI 뭔가 항상 느끼지만 애니메이션 로직은 영 구현 못하네 ㅆㅇㅆ(124.216) 01:44 10 0
2896509 Ada에서의 객체(Object)란 무엇인가? 나르시갤로그로 이동합니다. 01:37 13 0
2896508 MS 보안 빡세네... 이거 핸드폰 못 팔겠네.... ㅠㅠㅠ 넥도리아2025(220.74) 01:33 16 0
2896500 캄보디아 대포통장 살인사건은 은행 책임도 있다 발명도둑잡기(118.216) 01:18 14 0
2896488 후스넘버 허위 내리는법 (106.102) 00:56 28 0
2896485 캄보디아 이거 진짜 무섭네 [4] 노력갤로그로 이동합니다. 00:54 49 0
2896484 ( ㅇ ㅅ ㅇ )a [1] 노력갤로그로 이동합니다. 00:54 18 0
2896483 냥덩아 발명도둑잡기(118.216) 00:53 12 0
2896482 지듣노 발명도둑잡기(118.216) 00:44 8 0
2896480 나르시 에이다 빠는거 보니까 예전에 클로저 빠는 아재 있었는데 [1] 박민준갤로그로 이동합니다. 00:35 30 0
2896478 패턴 매칭(Rust) vs. 직접 접근(Ada): 공정한 비교 나르시갤로그로 이동합니다. 00:30 11 0
2896477 제미니의 편향: Ada는 상대적으로 복잡한 것처럼 서술했네 ㅎㅎ 나르시갤로그로 이동합니다. 00:29 11 0
2896475 현시대는 토발즈도 1찍 짱깨편인 무서운 시대이다ㅋㅋ번식 더 해줘라 이기 타이밍뒷.통수한방(1.213) 00:28 10 0
2896473 인터넷에서 싸우지 마라 [2] 박민준갤로그로 이동합니다. 00:26 36 0
2896472 "대통령님, '소비쿠폰' 저도 할 말 있습니다" 발명도둑잡기(118.216) 00:26 15 0
2896471 제미니의 러스트 편향성: Addr.Addr_V4'Image 이거 아니잖 나르시갤로그로 이동합니다. 00:25 16 0
2896469 와.. 일본은 브라질 이겻넹 ㄷㅅㄷ ♥덩냥이♥갤로그로 이동합니다. 00:23 16 0
2896468 이재명 "홍석천도 폐업..자영업자 임대료 감면에 정부 나서 달라" 발명도둑잡기(118.216) 00:21 9 0
2896467 Rust 의 Result 가 대체 왜 편하다는 것??? 나르시갤로그로 이동합니다. 00:14 11 0
2896465 제미니마저 Rust에 편향되게 설명하네. ㅎㅎ 나르시갤로그로 이동합니다. 00:12 17 0
2896464 요즘 컴공은 next.js도 가르침? [4] ㅇㅇ(211.196) 00:08 40 0
2896463 멍유야 이것만 알아둬 [2] ♥덩냥이♥갤로그로 이동합니다. 00:04 28 0
2896460 Ada와 Rust 비교: 자료구조, 분기, 오류 처리 철학 [1] 나르시갤로그로 이동합니다. 10.14 19 0
2896458 [공지] 멍퀴벌레 신상 제보 받습니다 현상금 있음 ♥덩냥이♥갤로그로 이동합니다. 10.14 16 0
2896456 최근 영화 <추적>을 발표한 최승호 감독이 발명도둑잡기(118.216) 10.14 9 0
2896455 124.48 점마 진짜 개발지식 일천하노 ㅋㅋㅋ [1] ㅆㅇㅆ(124.216) 10.14 40 0
2896446 멍퀴벌레는 21세기 홍길동이당 By 나님 [4] ♥덩냥이♥갤로그로 이동합니다. 10.14 28 0
2896445 Ada 프로그래밍: 열거형과 선택 구조, 그리고 예외 처리 나르시갤로그로 이동합니다. 10.14 17 0
2896442 Ada 프로그래밍: 3.5 주석 (Comment) 나르시갤로그로 이동합니다. 10.14 9 0
2896439 진중권이 말하는 극좌 [2] ♥덩냥이♥갤로그로 이동합니다. 10.14 20 0
2896435 이거 강의 언제 어디서 듣나요 발명도둑잡기(118.216) 10.14 16 0
2896434 냥덩이는 털바퀴가 된당⭐+ 7화 ♥덩냥이♥갤로그로 이동합니다. 10.14 17 0
2896432 안목 유튜브 보고 스포이더로 똑같이. 넥도리아(220.74) 10.14 15 0
2896431 [공지] 나님.. 이 모든 사태에 대해 책임지고 탈갤합니당.. [1] ♥덩냥이♥갤로그로 이동합니다. 10.14 30 0
2896428 냥덩 도배 발명도둑잡기(118.216) 10.14 20 0
2896427 냥덩아 적당히해 [6] 개멍청한유라갤로그로 이동합니다. 10.14 45 0
2896424 샤미 “K-팝은 더 성장할 것…韓 아티스트 영입 검토” [1] 발명도둑잡기(118.216) 10.14 22 0
2896420 현시대는 토발즈도 1찍 짱깨편인 무서운 시대이다ㅋㅋ번식 더 해줘라 이기 타이밍뒷.통수한방(1.213) 10.14 10 0
2896418 [공지]냥덩강점기 종료~ 나님 야구 보면서 잘 놀다갑니당~ ♥덩냥이♥갤로그로 이동합니다. 10.14 28 0
2896417 비선실세 국정농단 의혹 김현지 제보 받습니당⭐ ♥덩냥이♥갤로그로 이동합니다. 10.14 33 1
2896416 와 벌써 시간 이렇게 됐네 잘 준비해야지 [2] chironpractor갤로그로 이동합니다. 10.14 23 0
2896415 김광현 ㅋㅅㅋ ♥덩냥이♥갤로그로 이동합니다. 10.14 16 0
2896414 18년인가 양현종 마무리 우승이 ㄹㅇ 소름끼쳤는데 ♥덩냥이♥갤로그로 이동합니다. 10.14 17 0
2896413 애널 야구 좀 싱겁게 끝나서 아쉽 ♥덩냥이♥갤로그로 이동합니다. 10.14 16 0
2896412 김서현도 공이 빠른건 맞긴한데 제구 구리다던데 ♥덩냥이♥갤로그로 이동합니다. 10.14 17 0
2896411 폰세 막판에 퍼진거 같던데 ♥덩냥이♥갤로그로 이동합니다. 10.14 17 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2