мета-данные страницы
Это старая версия документа!
строки
В Си для представления строк используются массивы символов.
Каждая строка в качестве завершающего символа содержит символ \0 т.н. нулевой символ / нулевой байт.
char message[] = "Hello"; size_t length = sizeof(message)/sizeof(char); // 6 символов for(size_t i=0; i<length; i++){ printf("%d ", message[i]); // 72 101 108 108 111 0 }
Если бы мы определяли массив message не как строку, а именно как массив символов, то последним элементом должен был бы идти нулевой символ:
char message[] = {'H', 'e', 'l', 'l', 'o', '\0'};
Явное определение длинны
// a b c \0 - все верно char abc[4] = "abc"; // нулевой байт будет отброшен char abc[3] = "abc"; // лишнее место заполниться нулевыми байтами char abc[5] = "abc"; // поведение определено компилятором // например gcc отбросит лишние символы char abc[2] = "abc";