gpt4 book ai didi

c - 某些 GCC 编译器如何修改常量 char 指针?

转载 作者:行者123 更新时间:2023-12-04 20:03:59 25 4
gpt4 key购买 nike

我正在读一本名为“理解和使用 C 指针”的书。在第 110 页,它有以下几行:

... However, in some compilers, such as GCC, modification of the string literal is possible. Consider the following example:

  char *tabheader = "Sound";
*tabheader = 'L';
printf("%s\n", tabheader); //Displays "Lound"

接着描述了 const char *tabheader 的用法,它可以防止修改这个变量。

我目前正在使用 Cloud 9/Ubuntu。我使用 GCC 编译了这段代码并运行了它。如我所料,它导致了 segmentation fault 错误。

我对书中的这些说法感到很困惑。一直以来,我对语句 char *tabheader = "Sound"; 的理解与 const char *tabHeader = "Sound"; 相同 现在,这本书是这样说的取决于哪个 gcc 编译器

我的问题是:哪个 GCC 编译器允许这段代码运行?你对此有何看法?这是否也属于未定义行为?

最佳答案

如果您在编译时使用 -fwritable-strings 选项,这将适用于 4.0 之前的 GCC 版本。此选项已在 4.0 中删除。

关于c - 某些 GCC 编译器如何修改常量 char 指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43852128/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com