char str[20]; 这里是静态声明数组
char *p=new char[20]; 这里是动态声明数组
char *p=new char[20] 也可以写成 char *p; p = new char[20];
静态声明数组时你必须要知道数组的大小,即数组大小是个常数,而
动态声明数组时数组的大小却可以是个变量.
如:
char *p;
int n;
cin >> n;
p = new char[n];
delete [] p;
静态声明时就不能char str[n] (n是个变量)
这就解决一些问题,如你要录入某些成绩,但你不知道人数,如果用静态数组,声明10000个,就浪费内存空间,
动态数组就可以根据人数生成你要的数组,不过在程序不要数组时要用delete 来释放内存