2013-07-29 4 views
2

Я знаю, что в C я могу получить длину массива char с помощью strlen(), но как получить длину целочисленного массива. Есть ли какая-нибудь функция в библиотеке?Как найти длину массива int в c?

+0

Единственный способ узнать длину такого массива - сохранить размер в боковой переменной. В отличие от строк символов значение _no_ будет действительным, чтобы пометить конец массива целых чисел, если только один, если он определен как таковой (например, ваш массив должен содержать только положительные значения, а в конце вы положите '-1'). – Nbr44

+0

Обратите внимание, что 'strlen' использует завершающий нулевой символ для поиска длины, вам нужно что-то подобное для массива int, в противном случае это невозможно – P0W

+4

Вы находитесь под ложным допущением. 'strlen' не предназначен для тестирования массивов' char', а для тестирования строк C, которые являются 'char' arrays ** plus ** специальным соглашением о завершении. –

ответ

4

В общем случае вы не можете получить длину массива, если массив не содержит предварительно определенный завершающий дозор. Таким образом, строка C является каноническим примером массива, который имеет предопределенный завершающий дозор, а именно нулевой терминатор.

Вам нужно будет отслеживать длину массива в отдельной переменной или использовать завершающий дозор.

Примером последнего было бы массив объявляется следующим образом:

int array[] = { 1, 2, 42, -1 }; 

, где -1 считается терминатор. Эта техника жизнеспособна только тогда, когда вы можете зарезервировать значение для использования в качестве терминатора.

Я предполагаю, что вы хотите получить длину динамически распределенного массива, так как это наиболее вероятный сценарий для задаваемого вопроса. В конце концов, если ваш массив объявлен следующим образом: int array[10], то это довольно очевидно, как долго это происходит.

Смежные вопросы