Как посчитать количество общих символов в const char **
Зацикливание каждой строки в указанном массиве.Для каждой строки подсчитайте количество символов.Добавьте длины вместе.
Обратите внимание, что вы можете решить, хотите ли вы подсчитать количество char
объектов (т. Е. Кодовых единиц) или количество символьных символов, которые не обязательно совпадаютв зависимости от кодировки символов.
sizeof(glfwNames)
sizeof
не имеет ничего общего с "количеством элементов".glfwNames
это указатель.sizeof(glfwNames)
- размер объекта указателя.Все указатели определенного типа всегда имеют одинаковый размер (в пределах конкретной системы) независимо от объекта, на который они указывают.
Невозможно определить количество элементов, если дан только указатель на элементмассив и никакой другой информации.Это просто невозможно, потому что указатель не содержит необходимой информации.Не зная, когда прекратить итерацию массива, невозможно правильно выполнить итерацию.
Это распространенные способы итерации диапазона (в данном случае это массив) итераторов (указатели являются итераторами длямассивы):
- Передайте длину диапазона в качестве аргумента и используйте индексированный цикл.Это работает со случайно доступными итераторами, такими как указатели.
- Передача итератора (в данном случае указателя) в конец (один за последним элементом) диапазона.Этот подход является более общим, поскольку он работает и с итераторами без произвольного доступа.Увеличивайте итератор в цикле, и, как только он достигнет конца, вы узнаете, чего вы достигли.
- Назначьте определенное значение в качестве элемента-стража (также известного как терминатор).Когда встречается значение часового, вы знаете, что итерация достигла конца диапазона.Этот подход используется для строк с нулевым символом в конце.
- Примечание: Интересно, что аргументы командной строки (
argc
+ argv
) обеспечивают оба способа: argc
- длина, ноchar** argv
также завершается нулевым указателем.
Если вы получаете glfwNames
из библиотеки, обратитесь к документации библиотеки, чтобы узнать, как узнать длину.Если вы контролируете как вызов, так и определение функции, убедитесь, что вы передали в функцию достаточную информацию.