我是 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