gpt4 book ai didi

c - 字符串文字是常量吗?

转载 作者:太空宇宙 更新时间:2023-11-04 04:21:35 24 4
gpt4 key购买 nike

如果我将字符串文字分配给 char*,GCC 和 Clang 都不会提示,即使使用了很多迂腐的选项(-Wall -W -pedantic -std=c99):

char *foo = "bar";

如果我将 const char* 分配给 char*,他们(当然)会提示。

这是否意味着字符串文字被认为是 char* 类型?它们不应该是 const char* 吗?如果它们被修改,这不是定义的行为!

并且(一个不相关的问题)命令行参数(即:argv)如何:它是否被视为字符串文字数组?

最佳答案

它们是 char[N] 类型,其中 N 是包括终止符 \0 的字符数。所以是的,你可以将它们分配给 char*,但你仍然不能写入它们(效果将是未定义的)。

Wrt argv:它指向一个字符串指针数组。这些字符串是可显式修改的。您可以更改它们,并且它们需要保留最后存储的值。

关于c - 字符串文字是常量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46294477/

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