gpt4 book ai didi

c - 分配给字符串数组

转载 作者:太空宇宙 更新时间:2023-11-04 01:03:45 27 4
gpt4 key购买 nike

我正在使用 C,在下面的代码片段中,我认为对 c 的赋值是可以的。 cArr[] 的分配运行正常,但对我来说似乎不正确。看来我应该使用类似的东西:

char cArr[3][80];

或者这些字符串是放在堆上的吗?

int main(int argc, char** argv)
{
char* c = "abcd";

char* cArr[3];

cArr[0] = "A string of of characters.";
cArr[1] = "Another inane comment.";
}

最佳答案

第一种情况:

char* c = "abcd";

cchar * 类型。字符串 "abcd" 的基地址存储在其中。正确。

第二种情况:

char* cArr[3];

cArr 是一个包含三个 char * 的数组。

cArr[0] = "A string of of characters.";
cArr[1] = "Another inane comment.";

也很好并且合法。您将字符串文字的基地址存储到 char * 类型的变量中(此处为 cArr[n])。这没有问题。

Or are these strings being placed on the heap?

不是真的。标准仅指定字符串文字应具有静态存储持续时间。通常字符串文字放置在只读内存位置,因此您可能无法修改 cArr[n] 指向的字符串。因此,基本上它取决于存储字符串文字的位置。如 this previous answer 中所述,字符串存储在二进制文件的 .rodata 部分。

关于c - 分配给字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29144162/

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