У меня есть простой код на C, чтобы увидеть, заканчиваются ли три одинаковых массива символов на '\0'
:
int main(){
char a[4] = "1234";
char b[4] = "1234";
char c[4] = "1234";
if(a[4] == '\0')
printf("a end with '\\0'\n");
if(b[4] == '\0')
printf("b end with '\\0'\n");
if(c[4] == '\0')
printf("c end with '\\0'\n");
return 0;
}
Но вывод показывает, что только массив b заканчивается терминатором '\0'
. Почему это? Я предполагал, что все массивы символов должны заканчиваться на '\0'
.
Выход:
б заканчиваться на '\0'
char
должны заканчиваться на'\0'
. -- Нет. Все строки должны заканчиваться разделителем\0
, но допустимы массивы символов без разделителя null. - person ad absurdum   schedule 17.07.2017char a[4] = "1234";
является то, чтоa
представляет собой массив символов (как объявлено), инициализированный значениями из строкового литерала, но не string. - person ad absurdum   schedule 17.07.2017