gpt4 book ai didi

c - C 如何知道赋值后一个 char* 有多长?

转载 作者:行者123 更新时间:2023-12-01 13:57:54 25 4
gpt4 key购买 nike

我知道在 C 中有两种使用“字符串”的方法--

char foo[NUMBER] = "bar";

char *foo = "bar";

我还知道,由于 C 存储前者的方式,它们是不可变的——我无法将新字符串重新分配给数组。所以要有一个可变的字符串 var,我必须使用一个指针。但是 C 如何存储/知道我正在分配的新字符串的长度——

*foo = "hello";

这个字符串比第一个字符串长,所以如果 C 在第一次赋值时发现它只需要 3 个字节到存储“foo”,并因此分配了那 block 内存,它如何改变它,如果它必须让 foo 指向一个更长的字符串?

最佳答案

当您在“C”中写下双引号字符串时,这些字符串将存储到内存的文本段(常量数据)中。

char foo[NUMBER] = "bar" : 将 "bar" 复制到数据段。

char *foo = "bar" : char *foo存入数据内存,foo只指向"bar" 存储在文本段中。

您可以随时通过 foo = "hello" 更改 foo 应指向的位置。

关于c - C 如何知道赋值后一个 char* 有多长?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33162566/

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