gpt4 book ai didi

关于 char 数组的说明

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

我有一个基本的澄清。这是我试过的代码片段。

void fill(char s[])
{
strcpy(s,"temp");
}

int main()
{
char line[100];
fill(line);
printf("%s",line);
return 0;
}

正如预期的那样,输出是 templine 是一个本地数组,但它可以在 fill 中修改并反射(reflect)在调用者。我的理解是,这是有效的,因为当我们说 fill(line) 时,我们实际上传递的是数组开始的地址。

我说得对吗?

最佳答案

是的,你是对的。

请注意,这是危险的代码 - 使用这种类型的代码很容易 fill 覆盖传入缓冲区的末尾。 Fill 应该知道缓冲区的大小,并且不应写入超过该大小的末尾。

例如,如果您在 War and Peace 的内容中写入的不是“temp”,程序将很乐意覆盖许多与变量 line 无关的其他内存位置。

关于关于 char 数组的说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7852635/

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