gpt4 book ai didi

c - 在函数中将数组声明为静态的目的是什么?

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

我创建了一个函数(例如:fun())并从主函数调用它。我还在函数中创建了一个数组,我将数组的基地址返回给主函数中的整数指针.如果在函数 fun() 中将数组声明为静态,则数组元素将在主函数中正确显示。如果不是,则会打印一些垃圾值。但反之亦然,效果很好。即,decalring主函数中的一个数组,并通过传递基地址在另一个函数中打印它。那么将数组声明为静态数组有什么用呢?正确的解释是什么?

最佳答案

如果一个对象在函数中被声明为静态的,那么它本质上是一个全局的和永久的,不会像其他局部变量一样在每次调用函数时都重新初始化。

如果你有一个函数本地的非静态对象,并且你返回它的地址,当调用者用这个地址做一些事情时,这个对象已经超出了范围,因为你不再在函数的主体中被调用的函数,以及你的指针指向的内存区域中有未定义的数据,不管你之前放在那里的是什么。如果对象是静态的,那么它不会超出范围。

如果您有一个main 的本地对象,并且您从main 调用一个函数并将指针传递给该对象,那么该对象仍然存在程序而言,因为你仍然“在”主函数中,并且当你离开被调用函数的主体时会返回到它,所以引用该内存区域是没有问题的。这与 main 无关:从不同的函数尝试同样的事情。

顺便说一句,这些都与数组无关,整个讨论适用于任何类型的对象。

关于c - 在函数中将数组声明为静态的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20843759/

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