#include <iostream>
#include <string>
using namespace std;
int main() {
string s = "hello";
cout << s[5] << endl;
return 0;
}
В приведенном выше коде, если я печатаю s[5]
, он правильно печатает NULL
характер. Но если изменить код следующим образом:Null поведение персонажа C++
#include <iostream>
#include <string>
using namespace std;
int main() {
char[] s = {'a','b','c','d','e'};
cout << s[5] << endl;
return 0;
}
Он не печатает NULL
характер, но что-то случайное. Если я сохраню строку как string
или как char*
, то поведение будет соответствовать тому, что я ожидаю.
Но если я явно объявляю массив символов, как компилятор знает, когда заканчивается массив? Сохраняется ли размер массива во время компиляции?
'char [] s = {'a', 'b', 'c', 'd', 'e'};' Эта конструкция хранит только указанные вами символы и ничего больше; нет нулевого ограничителя. –
компилятор смотрит на количество статических символов, которые вы предоставили, и узнает его размер. естественно, если статические символы не были объявлены, вам нужно будет указать размер – mangusta
Это должно быть 'char s []', а не 'char [] s'. –