c - C 中 char[] 和 char* 的区别

标签 c string variable-declaration

我目前正在学习 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/

相关文章:

Ruby 字符串比较

javascript - 就时间优化而言,最好在 for 循环内部或外部声明 JavaScript 对象

c - 置换 i 和 T[i]

java - 我必须计算字符串中最后一个单词的长度。出现错误

c - -Wformat-truncation - 我可以避免它而不是禁用警告吗?

java - 解析字符串输出到文件

python - 在函数外部用 cdef 声明的变量在函数内部是否具有相同的类型?

string - 声明类型为 `String` 的变量不起作用

c函数返回两种可能类型之一

c - 从哪里调用 malloc 重要吗? - C