c - char s[] 和 char *s 有什么区别?

标签 c string char constants

在 C 中,可以在这样的声明中使用字符串文字:

char s[] = "hello";

或者像这样:

char *s = "hello";

那么有什么区别呢?我想知道在编译和运行时的存储持续时间方面实际发生了什么。

最佳答案

这里的区别在于

char *s = "Hello world";

"Hello world" 放入内存的只读部分,并使 s 成为指向它的指针,这样就可以进行任何写入对该内存的操作是非法的。

在做的时候:

char s[] = "Hello world";

将文字字符串放入只读内存并将字符串复制到堆栈上新分配的内存中。从而使

s[0] = 'J';

合法。

关于c - char s[] 和 char *s 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1704407/

相关文章:

c - 在 C 中将字符串存储到 Char 数组中 & 段错误

c - 将字符串放入C中的二维字符数组

检查是否按下了 ALT 键

c# - PowerShell - 将 FileTime 转换为 HexString

c - 整数除法 (1/n) 的结果始终向下舍入为 0.000

java - 从 nextLine 读取的输入不等于字符串值

javascript - 将单词转换为链接并在html中替换它们

c - 通过snprintf将uint8_t/uint16_t数据类型转换为char[]

c - 如果在 INADDR_ANY 上监听,确定客户端连接的实际接口(interface)?

c - eBPF:默认 bpf 程序/映射?