什么时候要用到动态存储呢?它在用的时候还要指定大小,和静态分配区别在哪呢?
运行的时候若由用户指定了一个大小n,程序接下来就可以这样分配int *arr = (int *) malloc ( sizeof(int) * n );
编译的时候无法确定大小的,只能用动态存储。
另外,程序中可能使用,也可能不使用的存储,用动态存储可以提高性能。
我是说编译时无法确定大小。而不是说无法确定大小。
malloc中指定变量,而变量来自用户的输入,这种情况编译的时候就没法确定大小。
动态分配是运行时,比如程序运行的时候,用户输入一个值,程序根据输入的值分配对应大小的空间。而静态分配是程序编译的时候就指定了大小。
你的数组定义多大呢?
C不允许你写
int arr[n]; //如果n是变量
http://blog.csdn.net/evankaka/article/details/44457765
栈,堆,全局,文字常量,代码区总结
In function 'int main()':
Line 3: error: ISO C++ forbids variable-size array 'a'
compilation terminated due to -Wfatal-errors.
你的代码没法编译的。