Я попытался это:Строка инициализируется как « 0» в C?
char s[100];
for(int i=0; i<100; i++) {
if(*(s+i) == '\0')
printf("end of string\n");
}
и «конец строки» будет напечатанных в 96 раз. если я изменил определение строки на char * s [120]; Я получу «конец строки» 100 раз
Почему? как строка точно инициализируется.
Я пытаюсь проверить каждые 3 символа в строке, необходимо, чтобы проверил, что произойдет, если мой указатель передаст конец строки.
Редактировать: извините, опечатка. должен быть char s [100] вместо char * s [100]
Вы понимаете, что вы объявляете массив указателей на символы, а не массив символов или строки? – AntonH
Чтобы быть понятным, ваша петля показывает, что первые 100 элементов массива имеют значение '0'. Увеличение длины массива не изменило этого. Без полного кода невозможно сказать * почему * все элементы массива являются '0' и даже если они явно не инициализированы (например, с символом' char * s [100] = {0}; 'или неявно объявив его массивом gobal, вам может быть повезло * при поиске всех элементов '0'. BTW-тестирование с' '\ 0'' не делает массив указателей массивом символов,' '\ 0'' не является a 'char' оценивает значение' 0'. –