char* p = "Hello"; //BAD - OBSOLETE!
strcpy (p,"bye");
Хороший компилятор должен выдать ваше предупреждение (или ошибку) в первой строке, потому что это устарело, и язык требует, чтобы вы написали это как:
char const * p = "Hello"; //GOOD
Как только вы напишете это (что, во всяком случае, правильно), все станет ясно: p
указывает на константные данные, означает, что данные, на которые указывает p
, не могут быть изменено, что, в свою очередь, означает, что вы не можете перезаписать его с помощью strcpy
(или вручную).
Если вы хотите перезаписать это, один из способов объявить p
как массив:
char p[] = "Hello"; //OK
strcpy (p,"bye"); //OK - for any string (2nd arg) of length <= 5
В C++ следует использовать std::string
, по возможности избегая char*
и char[]
. Таким образом, способ написания кода на С++ будет таким:
#include <string> //must include this first
std::string p = "Hello";
p = "bye"; //overwrite it.
Так просто!
person
Nawaz
schedule
11.08.2012