배열을 인수로 받는 함수내에서 sizeof 가 제대로 작동하지 않는 이유에 대하여

배열 A 의 길이는 흔히

와 같이 구하고는 한다.
 하지만, 배열을 인수로 받는 함수내에서 배열 A 의 길이를 구하고자 한다면 이야기가 달라진다. 예를들어,

와 같은 코드는 제대로 작동하지 않는다.

 위와같이 배열의 포인터를 인수로 받는경우, 컴파일러는 함수내의 포인터를 배열이라고 인식하지 않고 단순히 포인터로 인식한다.
따라서 포인터의 크기를 인트형의 크기로 나누는 작업을 하는 오류를 일으키게 되는것이다.
 함수내에서 배열의 길이를 구하고자 한다면, 함수를 호출하는 쪽에서 함수의 길이를 계산하여 그 값을 인자값으로 넘겨주는 방법이 제일 간단하다.
 C++나 JAVA와 같은 언어를 사용한다면, STL이나 컬렉션을 이용하여 이런 문제를 해결할 수 있지만, C언어에서는 그냥 인자값으로 배열과 배열의 길이를 같이 넘겨주는게 가장 편한것 같다.