| [ CnUnix ] in KIDS 글 쓴 이(By): parkeb () 날 짜 (Date): 1995년07월15일(토) 22시09분02초 KDT 제 목(Title): [Q] C 언어에서요.. 요즘 C 를 공부하고 있어서 물어볼려구 합니다.. 제가 묻고 싶은 것은요.. 이차원 배열이라는 것인데요.. 즉 가령 int a[4][5]; 와 같이 선언된 배열이 있다면.. 그경우 a[0], a[1], a[2], a[3], a[4] 는 실제로 정수가 저장되는 기억장소는 아니자나요.. 이런 경우는 a[0] 는 또다른 5개의 기억장소 를 가지고 있는 배열인데요.. 이경우에도 책을 보면 a[0], a[1] .. 등의 값(value)라는 말을 씁니다.. 그리고 그 값은 a[0]라는 배열의 기억장소내의 시작번지 를 주던데요.. 왜 그런 값을 주는건지요? 제가 듣기엔 C 는 되도록 간단한 규칙을 유지하고자 한다는 말을 들었습니다.. 그런데 C의 경우엔 실제로 포트란등에서 정의되는 것과 같은 이차원배열은 없고, 배열의 구성요소에 배열을 넣을 수 있어서 그것을 소위 이차원, 삼차원등 다차원배열로 쓰는 것으로 알고 있거든요.. 그런 경우에 가장 상위의 배열(즉 위의 예에선 a[0] 등 인덱스가 한개 뿐인 배열이 되겟죠..)도 실제는 값을 가지는 일차원 배열과 같기에 반드시 값을 가지고 있어야 하겟죠.. 그러나 실제는 그것은 어떤 실제적인 값(위에선 정수값이겟죠..)을 가지지 않고, 그래서 규칙을 지키기위해 번지수를 주는 것인지요? C를 만든 사람들의 생각이랄까요.. 이런 경우엔 왜 그런 값을 주게 했는지 좀 답변 부탁드립니다. 질문이 너무 장황해서 죄송하고.. 어쨌든 C의 역사나 만들때의 기본적인 사상, C 컴파일러를 만들었을때의 규칙등을 잘 아시는 분들 이면 좀 답변해주세요. 부탁드립니다. (추신: 제가 헷갈린 부분의 원책은 The Waite Group's "New C Primer Plus", 2nd ed. 의 P341 10장의 Arrays and Pointers 부분의 중간쯤 이런 구절이 나와서 그래요.. ...(중간 생략) Similarly, *zippo represents the value of its first element, zippo[0], but zippo[0] itself is the address of an int... 위에서 value 라고 하니 헷갈리네요.. 반드시 값이 있어야 하는것인가.. 그렇기에 zippo[0] 라는 zippo[0][0]의 시작번지 값을 배열의 값으로 줘야만 하는건지.. ) |