When/Why '\ 0' необходимо отметить конец массива (char)?
Оконечный нуль необходим, если в массиве символов содержится строка. Это позволяет найти точку, где заканчивается строка.
Что касается вашего примера, который, как я думаю, выглядит следующим образом
char line[100] = "hello\n";
затем для начала строковой литерал имеет 7
символов. Это строка и включает завершающий нуль. Этот строковый литерал имеет тип char[7]
.Вы можете себе это нравится
char no_name[] = { 'h', 'e', 'l', 'l', '\n', '\0' };
Когда строковый литерал используются для инициализации массива символов, то все его символы используются в качестве инициализаторов. Таким образом, по отношению к примеру семь символов строкового литерала используются для инициализации первых 7 элементов массива. Все остальные элементы массива, которые не были инициализированы символами строкового литерала, будут инициализироваться неявно нулями.
Если вы хотите определить, сколько времени хранится строка в массиве символов, вы можете использовать стандартную функцию C strlen
, указанную в заголовке <string.h>
. Он возвращает количество символов в массиве до нулевого окончания.
Рассмотрим следующий пример
#include <stdio.h>
#include <string.h>
int main(void)
{
char line[100] = "hello\n";
printf("The size pf the array is %zu"
"\nand the length of the stored string \n%s is %zu\n",
sizeof(line), line, strlen(line));
return 0;
}
Его выход
The size pf the array is 100
and the length of the stored string
hello
is 6
В C вы можете использовать строковой литерал для инициализации массива символов без завершающего нуля строкового литерала. Например
char line[6] = "hello\n";
В этом случае вы не можете сказать, что массив содержит строку, так как последовательность символов хранится в массиве не имеет завершающего нуля.
\ 0 используется для обозначения конца символьной строки в C. Большинство функций библиотеки std std требует, чтобы строка была прекращена таким образом, чтобы работать. – Outshined
Поскольку C не знает, как долго ваша строка, вы должны отметить конец символом \ 0, чтобы он знал, что он достиг конца вашей строки. –
Вы можете использовать строки Pascal в C тоже. Конечно, существующие функции не ожидают, что они не будут работать вместе. – harold