-2
Даже если имя строки обозначает адрес первого элемента в строке, когда я выполнить это:C строки в стиле
char str[]="dog";
cout<<str<<endl;
Почему вся строка печатается?
Даже если имя строки обозначает адрес первого элемента в строке, когда я выполнить это:C строки в стиле
char str[]="dog";
cout<<str<<endl;
Почему вся строка печатается?
В C++ оператор «< <» «умный». Он знает типы вещи слева от нее и справа от нее, и если вещью справа является указатель на символ, а вещь слева от нее - выходной поток, он печатает строку, а не значение указателя.
В C вы должны указать printf(), который связан с «% p» или «% s», но «< <» делает этот выбор для вас.
Google «Перегрузка оператора C++»
Почему бы не разрешить другим? Вы передаете начало строки в 'cout', и она реализована для чтения строки с этой точки. Какая там таинственность? Если я дам вам только место начала моей улицы, как вы можете идти по всей улице? – kaylum
Я голосую, чтобы закрыть этот вопрос как не по теме, потому что он представляет собой неспособность прочитать вступительный учебник. – Joshua
Я думаю, что это правильный вопрос, и, как говорит Ли Дэниел Крокер, это нетривиально. –