繁体   English   中英

在c中的main函数中初始化的变量存储在哪里?

[英]where are the variable stored that are initialized in main function in c?

在C语言中,我知道使用malloc动态初始化变量时,该变量存储在堆区域中。 但是,当进行以下类型的声明并稍后初始化变量时,在哪里分配内存。

int a[26];

要么

int a[n]; //n is a variable and each element in array a is later initialized through a for loop.

我最初的理解是像在Java中一样,这里在main函数中声明的所有变量也都存储在堆栈区域中。 我的怀疑是-说,有一个函数采用数组“ a”的地址并更改其内容。 要更改“ a”的内容,它应该能够访问“ a”中每个元素的地址。 由于函数本身正在主函数顶部的堆栈空间中执行,因此它无法直接访问数组“ a”的内容。 因此,我的疑问是数组“ a”的内存分配在哪里?

通常, int a[n]; 称为可变长度数组,并且存储分配取决于编译器。

例如, gcc在堆栈内存中分配VLA

FWIW,局部变量通常也存储在堆栈内存中(减去编译器优化,如果有的话)。

数组几乎可以是任意长度,可以用于存储数千甚至数百万个对象,但是必须在创建数组时确定大小。 索引中访问数组中的每个项目,索引只是一个数字,指示对象在数组中的存储位置或插槽。

存储在计算机物理内存中的阵列大小

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM