char*p ="orkut"vs const char*p ="orkut"

Moh*_*ain 1 c pointers

 char *p="orkut" vs const char *p="orkut"
Run Code Online (Sandbox Code Playgroud)

什么是这两个差异...

编辑

来自bjarne stroustrup,第3版第90页

void f()
{

char* p="plato";
p[4]='e' // error: assign to const;result is undefined

}
Run Code Online (Sandbox Code Playgroud)

这种错误通常不会被捕获,直到运行时间和实施在执行此规则方面有所不同

与const char*p ="plato"相同

这就是为什么我会问这种差异...... 这里的const的意义是什么?

Bri*_*ndy 7

const char*变种是正确的.

您不应该更改来自字符串文字的内存(通常称为静态存储).它是只读存储器.

不同之处在于char*变体将允许您编写语法以通过解除引用来更改它指向的数据.它实际上做的虽然未定义.

//Option 1:
char *p = "orkut";
*p = 'x';//undefined behavior


//Option 2:
const char *q = "orkut";
*q = 'x';//compiling error
Run Code Online (Sandbox Code Playgroud)

我宁愿让选项2发生在我身上.