gpt4 book ai didi

C:两种数组初始化之间的差异

转载 作者:行者123 更新时间:2023-11-30 17:32:32 24 4
gpt4 key购买 nike

为什么这两个数组初始化之间存在差异?

char *message = "HELLO";

if(message[0] == 'H'){
// true
}

好的,这有效。但这并不:

char message[6] = "HELLO";

if(message[0] == 'H'){
// false
}

他们表达的不是同一个东西吗?

最佳答案

在第一个代码片段中,message 是一个指向只读字符数组的指针。您可以修改指针(例如 ++message 很好),但不能修改它指向的内容(message[0] = 'X' 调用未定义的行为)。

在第二个代码片段中,message 是一个带有初始值设定项的字符数组。您无法修改变量(++message 无效),但可以修改数组的内容(message[0] = 'X' 可以)。

此外,sizeof(message) 也可能不同。

当您仅访问message[0]时,它们的行为类似;也就是说,要么您声称的行为是错误的,要么您的编译器存在非常令人惊讶的错误。

但它们是不同的东西,并且在几个方面表现不同,我刚刚列举了其中一些。

关于C:两种数组初始化之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24102967/

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