Цитата(Vladimir_T @ Mar 17 2009, 21:53)

Можно было бы передавать размер массива в саму функцию, но это не то.
Да кто Вам такое сказал? Как раз то самое. Самое простое и самое широкоиспользуемое явление -- передавать в функцию указатель вместе с размерностью массива. Посмотрите на библтотечные функции и убедитесь, что это так и делается.
Цитата
Вызывается эта функция часто и для массивов разной длины, потому хотелось лаконичнее, да еще бы с передачей в функцию указателя на массив
А эта "хотелка" (требование) еще раз подтверждает, что Вам надо делать именно так, как сказано выше -- передавть в функцию два параметра.
Вы видели как дети рисуют картины? Чем детские картины отличаются от картин взрослых? -- Дети стремятся выразить себя не в точности отображения, а в насыщеености и яркости красок. Ни один художник не станет
писать свою картину флуоресцентными маркерам. Хотя, в жизни иногда встречваются типа Малевичей... Не важно. Вы понимаете о чем я толкую? Выпендрежный стиль программирования говорит не крутости программиста, а скорее о его кудрявости. Чем больше всяких трюков, тем сложнее (== дольше) отлаживать прогу и сопровождать ее после выхода в свет. Если Вы "играетесь", и результат Вашей работы не имеет никакого значени, то можете делать все что Вам заблагорассудится. Если же Вы намерены делать "по-взрослому", забудьте про витееватость. Делайте как можно проще и понятнее. А свои секреты ппрограммирования защищайте другими способами.
Возвращаясь к вашему коду, скажу, что
sizeof -- это оператор, а не функция. Т.е. после компиляции на его месте Вы не найдете вызова какой-то функции, там будет готовая константа, число. sizeof вычисляется на этапе компиляции. Поэтому, если в Вашей программе размеры передаваемых в функцию массивов одинаковые, то использовать вычисления размера не имеет смысла. Если же размеры массивов разные, то вычисление размера следует производит пере вызовом функции и передвать его как еще один параметр.
Конечно, если Вам Ваша религия запрещает использовать дополнительные параметры при вызове функции, то, в принципе, у Вас еще есть две возможности сказать функции о размере массива.
1. Создать глобальную переменную (или локальную файловую перемменную, если все действие у Вас производится в одном и том же файле) и через нее сообщать вызываемой функции размерность массива.
2. Создать еще одну структуру из двух элементов: 1) указателя на массив и 2) числа -- размерности этого массива. И затем передавать в свою функцию эту структуру.
Замечу, что эти два способа работать будут. Но это не есть "кошерно", хотя смотртся круто.
Делайте как можно проще и понятнее. Такой подход выгоднее со всех точек зрения. И это подтверждается практикой.
Мы все когда были на Вашем месте, и тоже не знали как правилно делать. Почитайте K&R, почитайте Страуструпа. И удачи Вам в освоении языка!