【发布时间】:2018-02-21 14:42:52
【问题描述】:
简而言之,从 C 语言来看,数组和字符串文字是不可修改的左值。
C 中的“不可修改”与编程语言(例如 Python、Java 和函数式语言)中的“不可变”的含义相同吗?
在编程语言设计中,数组的“不可修改”和“不可变”对其元素/项是否意味着相同?
为什么我们可以在 C 中修改数组元素的值和字符串字面量,而在 Python 中却不能修改字符串中的项?
谢谢。
【问题讨论】:
-
Why can we modify the value of an element of an array and string literals in C您不能在 C 中修改字符串文字。它是文字。不过你可以修改数组。 -
"为什么我们可以在 C 中修改数组元素的值和字符串字面量,而在 Python 中却不能修改字符串中的项?"为什么 C 和 Python 应该是一样的?如果所有语言都相同,那么存在不同的语言就没有意义了。
-
如何在 C 中修改字符串文字?
-
@Sraw 语言会让你说
char *s = "abcde"; s[1] = 'x';。这取决于机器架构。我们习惯使用的机器支持虚拟内存并允许您将块标记为只读,在这种情况下编译器应该将字符串文字放在只读区域中,s[1] = 'x'可能会导致程序崩溃。但我使用过的嵌入式系统不具备这种能力。所以你最终会在内存中得到"axcde"。
标签: java python c programming-languages immutability