c语⾔中new动态数组初始化,C++中静态初始化数组与动态初
始化数组详解
静态初始化的数组的长度必须是在程序中确定的常数,不能是由⽤户输⼊的变量
例⼦:
int a[10];//正确
Student stud[10];//正确:Student是⼀个学⽣类
int n;cin>>n;int a[n];//错误
int n;cin>>n;Student stud[n];//错误:Student是⼀个学⽣类
动态初始化数组可以使⽤⽤户输⼊的变量作为数组的长度。
例⼦:
int n;
cin>>n;
int *a=new int[n];//这样整数数组的长度不需要在程序中确定,可以在程序运⾏的时候由⽤户输⼊
定义数组初始化int n;
cin>>n;
cin>>n;
Student *stud=new Student[n]; //这样学⽣数组的长度不需要在程序中确定, 可以在程序运⾏的时候由⽤户输⼊
注意:静态初始化对象在定义的时候分配空间, 调⽤⽆参数的构造函数或者是有参数的构造函数
问题来了:如果我就是要⽤静态初始化数组,但是我的输⼊长度⼜想取决于cin>>n;那怎么办??
如果我们没有使⽤动态初始化数组,使⽤静态初始化数组,数组的长度需要到程序运⾏的时候确定,可以在程序⾥初始化⼀个⽐较⼤的数组,运⾏程序时只使⽤长度为n的部分数组,尽管这样会浪费内存资源,但是也是⼀种解决⽅案!!
例⼦:
int a[200];
int n;
cin>>n; //只是使⽤了数组的前n个偏移量
for(int k=0; k
cin>>a[k];
Student stud[200];
int n;
cin>>n;//只是使⽤了数组的前n个偏移量
for(int k=0;k
cin>>stud[k];
注意:动态初始化在定义指针时没有分配空间, new语句的时候才调⽤构造函数分配空间⽽且初始化
关于C/C++静态初始化数组的问题的异同需要强调⼀点:(这不是分析出来的,是在vs2015运⾏时发现的)
在C语⾔中:int n=1;int a[n];//错误
在C语⾔中:int const n=1;int a[n];//错误
在C++语⾔中:int n=1;int a[n];//错误
在C++语⾔中:int const n=1;int a[n];//正确
以上这篇C++中静态初始化数组与动态初始化数组详解就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持脚本之家。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论