gpt4 book ai didi

c - 字符串的地址什么时候分配?

转载 作者:行者123 更新时间:2023-11-30 19:33:21 25 4
gpt4 key购买 nike

#include<stdio.h>
int main()
{
char str[10];
printf("The address of string is %x", str);
return;
}

每次运行程序时,都会显示相同的内存地址。为什么会这样?什么时候分配内存?

最佳答案

由于您的 str 具有函数范围并且没有存储类说明符,因此默认情况下它具有自动存储持续时间。这意味着只要执行不离开其范围(main() 函数),它就存在。因此,您的问题的答案是:每当输入 main() 时,实现都必须为此变量保留内存。但实现仍然可以自由地提前完成,因为这不会导致不同的可观察行为。

至于您的其他问题,C 规范中没有没有告诉您有关地址的任何信息。最有可能的是,您的实现使用调用堆栈来存储本地(自动)变量,并且在您的系统中,该调用堆栈始终位于相同的虚拟地址。但这只是猜测,实现可以做任何它想做的事。

关于c - 字符串的地址什么时候分配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45916837/

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