0

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

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

所以我尝试了 数组的静态动态声明,并在运行时给它们大小,但程序运行良好。

那么,除了一个在堆上之外,它们之间有什么区别?就像两者都是数组的大小只有 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
4

0 回答 0