В C, C ++, Java и Python индексы массивов основаны на 0, поэтому они варьируются от 0 до length-1. Некоторые математически ориентированные языки программирования, такие как Matlab, основаны на 1. Как общее практическое правило, «настоящие языки программирования», как правило, используют индексацию на основе 0; языки математики / прототипирования / моделирования или другие предметно-ориентированные языки могут использовать индексирование на основе 0 или 1, с общим значением 1 для математики.
В терминах строк длина строки обычно относится к числу символов в строке, исключая завершающий NUL-символ, тогда как длина буфера относится ко всей длине буфера, включая завершающий NUL. Вы обнаружите, что std :: string :: size () и strlen () возвращают количество символов в строке, исключая завершающий NUL (то есть длину строки). Длина буфера на самом деле больше, чем это.