C中的char * vs const char *

Ant*_*eev 0 c pointers const-correctness c-strings string-literals

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

在上面的代码中,文字“ Hello”存储在DATA段中,并且是只读的。所以总是声明它不是更好:

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

避免使用不正确的代码,例如:

*(str+1) = 't';
Run Code Online (Sandbox Code Playgroud)

Lun*_*din 5

“ Hello”存储在DATA段中

“ DATA”或.data将指向具有静态存储持续时间的已初始化读/写变量所在的段。字符串文字不存储在此处,而是更有可能存储在名为中.rodata,或者可能.text与代码一起存储。请参见字符串文字:它们去哪里了?

所以总是声明它不是更好: const char* str = "Hello";

是的,您应该始终将const指针限定为字符串文字。普遍认为这是C语言中的最佳做法(在C ++中是强制性的)。