当前位置:首页 > 内存 > 正文

什么时候需要为数组分配内存

  • 内存
  • 2024-06-02 07:10:11
  • 439

一、C++中声明数组时是否分配了内存?如果初始化了之后呢?C/C++中的声明不分配内存,分配必须等到定义。
例如,如果你在某个位置说externalint[]a,它不会分配任何内存。因为这仅仅意味着在某个地方,已经有一个名为a的int[]数组。,当然分配的内存与当前程序无关。
当然,如果你定义了一个变量并给它一个默认值(初始化它),那么这个值必须存储在某个地方,所以内存分配是必要的。
语句就像“听说财务部来了一位女士”,内存分配就像“张晓先生,您部门来了一位新人”。为她腾出空间与前者无关,却与后者有关。


二、C语言定义数组时一定要分配空间么不同的编译器支持不同的标准,在VS下,是不需要分配空间的,但是初始化必然会分配空间。
voidmain(){inta[5];}
voidmain(){inta[5]={0};}


三、C语言中普通数组在定义的时候不给出数组的具体长度,那么计算机是在运行期间为其分配长度的吗?

变长数组:数组的长度是可变的。在程序运行并分配变量之前,无法确定数组的长度。在分配变量之前执行数组定义语句!)。

变长数组本质上仍然是一个静态数组(在定义之前它的大小是可变的,但在定义之后它的大小就不能改变)。

要定义动态数组,必须使用malloc函数分配内存。