배열과 NULL 값에 대해서 질문좀 드리겠습니다 ㅠㅠ..
글쓴이: NoZero77 / 작성시간: 화, 2014/01/21 - 1:25오전
제가 프로그래밍 처음 배울때 배열의 끝을 알리는값이 NULL 값이고 NULL 값을 만나는 순간 배열이 끝난다고 배웠는데요.
NULL 값이 0 으로 Define 되어있지 않습니까 ? ( NULL == 0 ? )
그럼 만약에 int test[3] = {0}; 이라고 하면 test배열의 [0] 번 요소부터 0이니까 배열이 바로 끝나버려야 정상이 아닙니까?.
하지만 당연히 그러지 않지요 ... 제 머리로 생각했을때 결국 NULL 은 0이 아니다 라는 결과만 나오네요 ... 제가 놓치고 있는 그무언가가 도대체 뭘까요 ㅠ
Forums:
...
> 제가 프로그래밍 처음 배울때 배열의 끝을 알리는값이 NULL 값이고 NULL 값을 만나는 순간 배열이 끝난다고 배웠는데요.
절대 그럴 리가 없는데요. "특정한 배열에서는 (예를 들면 main 함수의 인자로 받는 argv) 끝을 알리는 값을 NULL로 쓴다"라는 얘기를 잘못 이해하신 듯.
문자열과 일반 배열과 혼동한듯...
누가 어디서 배열의 끝이 NULL 이라고 하던가요?
문자열의 끝이 NULL 이면 몰라도....
본인이 그렇게 정의하시면 상관은 없습니다.
메모리를 초과해서 사용하지 않는다는 가정하에서, 배열의 바운더리를 0으로 정의해서 사용하는 데에는 아무런 문제가 없습니다. 단지 배열 내에서 0을 사용할 수 없게 될 뿐이지요.
실제로 문자열이 그렇게 하고 있습니다. 다만 언어 자체의 기능과는 무관하다 하겠습니다. 결론은 0을 배열의 끝으로 나름대로 정의하고 직접 관련 부분을 제대로 구현하면 상관없다는것.
결국 말씀하신 부분은.. 문자열이나 포인터 배열 처리 등과 혼동하셨거나, 누군가 그렇게 약속하고 구현해놓은 것을 보셨거나, 다른 랭귀지의 것과 혼동하신 게 아닐까 싶습니다. 허나 본인의 구현방식에 따라 얼마든지 가능하긴 합니다.
--
감사합니다 ㅠㅠ
확실히 제가 잘못이해하고 있었네요 !! 감사합니다 ㅜㅜ 많이 배워 갑니다 !!.
댓글 달기