我目前正在学习 C,但在理解如何声明字符串时遇到了一些困难。据我了解,在 C 中,字符串只是字符数组。我见过两种不同的声明字符串的方法:
char[] some_string = "hello world";
和
char *some_string = "hello world";
什么时候应该使用这些?我见过的大多数代码都使用 char *some_string 语法,但我确信这是有原因的。谢谢。
最佳答案
char some_string[] = "foo"
声明一个大小为 4 的本地数组,该数组在运行时使用值 'f'、'o'、'o' 和 '\0 进行初始化'。该内存(可能)位于函数的堆栈上。 char *some_string = "foo"
声明一个指针,该指针被初始化为字符串的位置,该字符串在编译时初始化为相同的值。字符串 char [] some_string = "foo"
是一个语法错误。两者之间最相关的区别是,在许多平台上,后者不可写。换句话说,如果 some_string 被声明为指针而不是数组,则 some_string[1] = 'a'
将在某些平台上生成段错误。
关于c - C 中 char[] 和 char* 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28389653/