只是在char *ptr = "Hello World"字符串文字或两个"Hello World"字符串文字?
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char array[] = { "Hello World" };
char *ptr = "Hello World";
printf( "%s\n", array );
printf( "%s\n", ptr );
printf( "%c\n", *array );
printf( "%c\n", *ptr );
printf( "%c\n", array[1] );
printf( "%c\n", ptr[1] );
return EXIT_SUCCESS;
}
# Hello World
# Hello World
# H
# H
# e
# e
Run Code Online (Sandbox Code Playgroud)
"Hello World"是一个字符串文字 - 无论您是将其分配给char *或将其复制到char []
char * ptr = "Hello World";应该是const char * ptr = "Hello World";- 字符串文字可能是不可修改的(在只读内存中),并且使用a const char *是一个额外的防止修改的保护措施.
char array[] = { "Hello World" }; 是安全的 - 这将字符串文字从潜在的只读内存复制到局部变量中.