Как найти длину/количество элементов для массива?

Возможный дубликат:
длина массива в аргументе функции

Мой размер массива - 5. Например:

arrCustId[5]

Как узнать, сколько идентификаторов клиентов уже присутствует в моем массиве? Короче, как найти длину массива?

Ответы

Ответ 1

Если массив статически выделен, используйте sizeof(array) / sizeof(array[0])

Если это динамически распределено, но, к сожалению, вам не повезло, так как этот трюк всегда будет возвращать sizeof(pointer_type)/sizeof(array[0]) (который будет 4 в 32-битной системе с char * s). Вы могли бы: a) сохранить #define (или const) константа, или b) сохранить переменную, однако.

Ответ 2

Вы имеете в виду, как долго находится массив или сколько клиентов в нем?

Потому что ответ на первый вопрос прост: 5 (или если вы не хотите его жестко закодировать, ответ Бен Стотт).

Но ответ на другой вопрос не может быть автоматически определен. Предположительно, вы выделили массив длиной 5, но изначально у вас будет 0 идентификаторов клиентов и поместите их по одному за раз, и ваш вопрос: "Сколько идентификаторов клиентов я помещал в массив?"

C не может вам это сказать. Вам нужно будет сохранить отдельную переменную int numCustIds (например). Каждый раз, когда вы вводите идентификатор клиента в массив, увеличивайте эту переменную. Затем вы можете сказать, сколько вы положили.

Ответ 3

Я не уверен, что я точно знаю, что вы имеете в виду.

Но чтобы получить длину инициализированного массива,

не работает strlen (string)?