【发布时间】:2021-05-10 19:47:12
【问题描述】:
这是没有未定义行为的有效 C 代码吗?
int main(){
int a;
memset(&a, 5, sizeof(int));
return a;
}
我假设这等于只是做int a = 5。
我试图了解在上面的示例中仅声明一个变量(不定义它)是否足以将其放入堆栈。
【问题讨论】:
-
C 没有堆栈的概念。只有变量,堆栈是实现细节。
-
这不是声明。这是一个定义。只是它的初始值是不确定的。
-
定义在做
int a = 5。 -
@EugeneSh.:C 中的每个定义都是一个声明。没有什么可以是定义,也不能是声明。
-
@AdrianMole:它在 C 2018 6.7 中。首先,它是一个声明说明符列表,后跟一个带有可选初始化的声明符列表,然后是一个分号。
标签: c integer memory-address memset