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