这里是我的书说:为const char * VS字符*
char *p="Hello"; //pointer is variable, string is constant
*p='M'; // error
p="bye"; // works
那么,在C我的第二个行不给我任何错误,无论是在C++中。
我在Windows 7上使用Turbo C++。现在是上述事情如果我尝试在gcc或其他东西。
而且在类似的路线,如果上面的代码被正确地书解释,
#include<iostream.h>
void display(char*);
void display(const char*);
void main()
{
char* ch1="hello";
const char *ch2="bye";
display(ch1);
display(ch2);
}
void display(char* p)
{
cout << p << endl;
}
void display(const char* p)
{
cout << p << endl;
}
现在我的图书考虑char*
和const char*
一样的,因为如果是那么上面的代码将无法正常工作,因为参数将是相同的?
(虽然我得到的涡轮增压+窗口输出你好再见。)
哪一个是正确的?
字符串文字存储在不可变的内存中,C++强烈建议仅使用const char *来引用它们。 –
@KerrekSB如果我不使用'const char *'会怎么样?它会自动对它进行类型转换还是保持原样? – Kraken
GCC告诉你有一个“从const char *'到'char *'”的弃用转换。无论你有什么,*写入数据总是未定义的行为。 –