작은숲:위키노트/초보자를 위한 C 언어 강의/함수의 매개변수로 넘어오는 배열의 끝 판별하기
보이기
함수의 입장에서 보면 매개변수로 넘어오는 배열과 포인터는 같다고 볼 수 있다. 매개변수로 배열을 넘긴다는 것은 단지 그 시작 주소를 넘겨준다는 것에 불과하다. 이렇게 매개변수로 넘어온 배열, 즉 포인터를 통해서는 배열의 크기를 알지 못한다. 마찬가지로 포인터는 배열의 시작과 끝을 감지하지 못한다. 그렇다면 함수의 매개변수로 배열을 넘겨줄 때 어떻게 그 끝을 감지할 것인가? 여기에는 두 가지 트릭이 있다. 이를 이용해서 C 언어에서는 크기가 가변인 배열을 다루는 함수를 쉽게 만들 수 있다. 첫째, 함수의 매개변수로 배열의 시작을 가리키는 포인터와 함께 배열 크기를 동시에 전달한다. 이것은 크기가 가변인 배열을 다루는 가장 일반적인 방법이다. 둘째, 프로그래머가 특별히 약속된 표지를 배열에 해두는 것이다. 문자열의 널 종료문자 '\0' 같은 것이 그러한 표지의 대표적인 실례에 해당한다. 즉 처리하고자 하는 배열의 최후 요소에 '\0'과 같은 특별한 값을 둠으로써 함수로 하여금 배열의 끝을 감지할 수 있도록 하는 방법이다. 일반적으로 두번째 방법은 문자열 또는 문자 배열을 다룰 때 주로 쓰이고, 첫번째 방법은 그 이외의 크기가 변할 수 있는 일반적인 배열을 다룰 때 흔히 쓰인다.