c - C 中字符串的声明

标签 c

Possible Duplicates:
Is it possible to modify a string of char in C?
What is the difference between char s[] and char *s in C?

我对 C 中的字符串和指针有些不明白。

假设我有这个声明:

char str[] = "abc";

然后,如果我尝试这样修改它:

str[0] = 'b';

它会起作用。

但是如果我将字符串声明为指向 char 的指针

char* str = "abc"

上述尝试将导致访问冲突。

我想要了解的是到底有什么区别。

提前致谢

最佳答案

在后面的示例中,编译器将字符串放入只读数据部分,因此您无法修改它。但在前面的示例中,您声明了驻留在堆栈中的字符数组,因此您可以修改该数组的内容。

关于c - C 中字符串的声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4864279/

相关文章:

c++ - 编译器如何识别其主机的硬件?哪个组件?

c - mmap 的指针算法

c - 我想创建一个摩尔斯电码转换器

c - 可执行和可链接格式(.elf)和对象(.o)文件之间的区别

c - 字符串操作后尝试释放内存时出错

java - 使用 TCP 在 Java(Android 客户端)和 C(PC 服务器 - Linux)之间传输文件

c - C中指向数组赋值的指针

c - C 中的结构语法 (->)

c - 我是 c 新手,我的程序正在运行,但没有任何输出

具有快速查找/插入/删除功能的循环缓冲区