数组的静态和动态声明有什么区别

时间:2021-06-07 18:23:13

标签: c++ dynamic-memory-allocation dynamic-arrays static-memory-allocation

我是 C++ 编程新手,我了解到所有静态变量都是在编译时在堆栈内存上分配的,因此在编译器编译之前应该知道它们的大小。

但是动态变量是在非常大的堆内存上分配的,编译器不需要事先知道大小

所以我尝试了 staticdynamic 声明数组,并在运行时指定它们的大小 但程序运行良好。

那么,除了事实上一个在堆上之外,它们之间有什么区别?就像两者都是数组的大小仅为 n

#include<bits/stdc++.h>
using namespace std;

main(){
  int n; 
  cin>>n;
  
  int arr1[n];
  int *arr2 = new int[n];
  
  for(int i=0; i<n; ++i){ 
    arr1[i] = i;
    arr2[i] = i;
  }
  
  for(int i=0; i<n; ++i){
    cout<<arr1[i]<<" "<<arr2[i]<<endl;
  }
  
}

输入:1000

输出:

0 0
1 1
2 2
3 3
.
.
.
.
(so on till)
999 999

0 个答案:

没有答案
相关问题