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/65587478/

相关文章:

c - 在图案打印程序中得到错误的答案

c - 将函数指针设置为静态地址

c# - 如何在一个 View 中使用两个模型?

c - char ptr 的值在++ 递增后不会改变

c - 在 C 中设置最后 n 位

r - 将一个字符串列拆分为几个虚拟变量

Java/Android : Append multiple strings, 如果字符串为空则跳过

c++ - klocwork CWARN.SIGNEDBIT on unsigned char

c - 查找字符串中字符串分隔符的数量

c - 初学者C分配