Речь идет не о том, чтобы объявить массив, который на единицу больше, а о том, как мы решаем определять строки в C.
По условию строки C считаются последовательностью символов, оканчивающихся окончательным символом NUL, Как Вам известно.Он запекается в языке в форме интерпретации "string literals"
и принимается всеми стандартными библиотечными функциями, такими как strcpy
и printf
и т. Д. Все согласны с тем, что именно так мы будем делать строки в C, иэтот символ должен сообщать тем функциям, где заканчивается строка.
Если посмотреть на ваш вопрос с другой стороны, причина, по которой вы не делаете что-то похожее в своих массивах целых чисел, заключается в том, что у вас есть другой способ узнать, какова длина массива - либо вы передаетедлина с ним, или он имеет некоторый предполагаемый размер.Строки могут работать таким образом в C или иметь какую-то другую структуру, но они этого не делают - парни из Bell Labs решили, что "строки" будут стандартным массивом символов, но всегда будутиметь завершающий NUL, чтобы вы знали, где это закончилось.(Это был хороший компромисс в то время.)