问题标签 [storage-duration]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 返回复合文字
看看这段代码。我在这里返回复合文字的地址。
输出:
ISO/IEC 9899 说:
如果复合文字出现在函数体之外,则该对象具有静态存储持续时间;否则,它具有与封闭块关联的自动存储持续时间。
即,在to_bar
函数中,由复合文字创建的未命名对象具有自动存储期限。因此,它将在to_bar
. 看来,这段代码会产生未定义的行为(基于标准)。是这样吗?
c - 全局变量属于c中的哪种存储类型?
想知道在C编程语言中声明一个不带static的全局变量,属于auto、extern、static、reg中的哪个存储类型?
c - 初始值设定项元素不是使用 C 的编译时常量
啊
交流
list
是简单的void*
链表结构
当我想创建FunctionNames
全局变量时,代码编辑器给我以下错误: a.h:8:29: error: initializer element is not a compile-time constant
. const
如果我在代码编辑器之前
不使用,FunctionNames
会给我同样的错误。
arrays - 何时分配 char 数组堆与堆栈?
我很难理解何时以及何时不分配 char 数组堆/堆栈,具体取决于它们的声明方式。例如:
我应该在退出 test() 之前调用 free(str1) 吗?
arrays - 为什么每个值都没有初始化为 0?
我认为一切都应该初始化为0,但事实并非如此。这有什么原因吗?非常感谢你的帮助。
c - Stack VS Heap,这里有什么?
所以我开始玩 C 并且到目前为止玩得很开心。
然而,有几件事我无法理解。
我知道这最终会在堆栈上
我知道这将为堆上的整数保留空间并返回地址
然而。如果我这样做
i_one 和两个是堆栈分配的,而 arr 在堆上。这是否意味着 arr 会将 i_one 和 2 的值复制到堆上,或者它会简单地保存对堆栈上变量的 2 个引用。我假设它是 alt one 的变体,考虑到(如果我没记错的话)我的堆栈分配的整数将在我退出此函数后立即被释放。
总而言之,当使用 calloc 创建动态分配的数组时。数组中的条目是否也需要分配指针/堆?在我看来这没有意义,因为那样我不会创建一个 int 指针数组吗?是的,我知道指针的大小与 int 相同,所以这个例子有点愚蠢,但你明白了。
谢谢
c++ - 在这种情况下,使用 const char* 或 std::string 更有效的是什么
我在我的应用程序中使用了 C 和 C++ 代码的组合。
我想通过使用三元运算符确定要打印的字符串来打印出布尔标志是真还是假,如下所示。
如果我使用const char*
, 编译器不会在程序启动之前将这些字符串文字存储在一些只读内存中"Yes"
。"No"
如果我使用std::string
,当字符串超出范围时,它会被销毁吗?但我猜编译器仍然需要存储字符串文字"Yes"
和"No"
某个地方?我不确定。
c - 在C中返回局部变量地址与本地字符串地址
下面的程序没有运行,因为我们正在返回本地 int 值。
然而,在下面程序运行的同时,即使我们返回本地字符串基地址。为什么本地 char* 的概念在这里不适用?
c++ - 在 C++ 中通过引用返回变量或对象是否可以?
所以我很好奇在 C++ 中通过引用从一个文件到另一个文件是否可以传递变量或对象,如下例所示。
字符串示例:
对象示例: