2016-09-15 4 views
-2

Даже если имя строки обозначает адрес первого элемента в строке, когда я выполнить это:C строки в стиле

char str[]="dog"; 
cout<<str<<endl; 

Почему вся строка печатается?

+0

Почему бы не разрешить другим? Вы передаете начало строки в 'cout', и она реализована для чтения строки с этой точки. Какая там таинственность? Если я дам вам только место начала моей улицы, как вы можете идти по всей улице? – kaylum

+3

Я голосую, чтобы закрыть этот вопрос как не по теме, потому что он представляет собой неспособность прочитать вступительный учебник. – Joshua

+1

Я думаю, что это правильный вопрос, и, как говорит Ли Дэниел Крокер, это нетривиально. –

ответ

4

В C++ оператор «< <» «умный». Он знает типы вещи слева от нее и справа от нее, и если вещью справа является указатель на символ, а вещь слева от нее - выходной поток, он печатает строку, а не значение указателя.

В C вы должны указать printf(), который связан с «% p» или «% s», но «< <» делает этот выбор для вас.

Google «Перегрузка оператора C++»

Смежные вопросы