"Hello";
какой будет strlen и std::size у обоих массивов?
Для массива array[] = {'H', 'e', 'l', 'l', 'o'}:
strlen(array):
Функция strlen() определяет длину строки по символу нулевого окончания \0. В этом массиве отсутствует завершающий символ \0, поэтому strlen(array) приведет к непредсказуемому результату, так как он будет искать нулевой символ до завершения массива и может перейти за его пределы, что может вызвать непредсказуемое поведение.
std::size(array):
std::size(array) вернет размер массива array, который равен количеству элементов в массиве. В данном случае, размер array будет 5, так как массив содержит 5 символов ('H', 'e', 'l', 'l', 'o'), но без завершающего нулевого символа.
Для массива array2[] = "Hello":
strlen(array2):
Функция strlen() вернет длину строки до символа нулевого окончания \0. В этом случае строковый литерал "Hello" содержит 5 символов плюс завершающий символ \0, поэтому strlen(array2) вернет значение 5.
std::size(array2):
std::size(array2) вернет размер массива array2, который также будет равен 6: 5 символов строки плюс завершающий нулевой символ \0.
я считаю здесь он нормально разобрал
Обсуждают сегодня