kev*_*mes 1 c memory string pointers char
char*str="hello";
Run Code Online (Sandbox Code Playgroud)
在这种情况下,字符串文字存储在只读存储器中.
char str[10]="name";
Run Code Online (Sandbox Code Playgroud)
在这种情况下,字符串文字存储在可写存储器中.
为什么分配的内存与两个字符串文字有区别?
在char*str="hello";(应该真的应该const char*str="hello";)的情况下,实际的字符串文字作为数组存储在只读存储器中,并且str只指向它.在第二个示例中,数组存储在全局数据段(对于全局变量)或堆栈(对于本地数据)中,没有指针.
可以这样想:
对于
const char *str = "hello";
Run Code Online (Sandbox Code Playgroud)
你有
+-----+ +-----------+ | str | ---> | "hello\0" | +-----+ +-----------+
虽然为
char str[] = "hello";
Run Code Online (Sandbox Code Playgroud)
你有
+-----------+ | "hello\0" | +-----------+