指向char的指针

Adr*_*ian 1 c++

char* pStr = new String("Hello");
char* s = "Hello";
Run Code Online (Sandbox Code Playgroud)

第一个是正确的吗?这两者有什么区别吗?我的猜测是第一个是在堆上分配的,另一个是堆栈.我正确还是有其他差异?

Arm*_*yan 10

第一个是不正确的,不会编译,因为String在C或C++中没有这样的东西.第二个将编译,并且在C(afaik)中很好.但是,在C++中,char*不推荐使用字符串文字转换.您可以在以后无意中写出s[0] = 'X';未定义的行为.

正确的方法是使用const(在C++中)

const char * s = "Hello";
Run Code Online (Sandbox Code Playgroud)

或者,更好的是,使用字符串

std::string s("Hello"); 
Run Code Online (Sandbox Code Playgroud)