小编典典

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

all

在 C 中,可以在声明中使用字符串文字,如下所示:

char s[] = "hello";

或像这样:

char *s = "hello";

那么区别是什么呢?我想知道在存储持续时间方面实际发生了什么,无论是在编译时还是运行时。


阅读 118

收藏
2022-03-08

共1个答案

小编典典

这里的区别在于

char *s = "Hello world";

将放置"Hello world"内存的只读部分中 ,并创建s一个指向它的指针,使对该内存的任何写入操作都是非法的。

在做的时候:

char s[] = "Hello world";

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

s[0] = 'J';

合法的。

2022-03-08