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的意义是什么?
该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发生在我身上.