如何定义动态一维二维数组

来源:互联网 发布:直播诱导支付充值源码 编辑:程序博客网 时间:2024/05/07 11:54

首先,C++是不允许定义不确定数组的,但是,有时候我们并不确定所需要的数组的长度,我们所需要的数组的长度根据输入的不同而不同,所以,这时候定义一个动态长度的数组十分必要,但是,C++是不支持定义不确定长度的数组的。

那么问题来了,为什么C++不支持定义不确定长度的数组呢?当我们用如下代码时

int length;int array[length];
编译器会报错。为什么会报错呢?因为编译的过程是是给代码分配内存空间的过程,编译器不知道length到底是多大,也就不知道给array[length]分配多大的内存空间。

那我们如何定义一个我们也不知道长度的数组呢?答曰:用指针。我们定义指针时,编译器只是分配了一个sizeof(*p)长度的空间,实际上,数组的空间还没有分配,只是在使用的时候才临时分配。

1、下面先定义一维动态数组:

int length;int *p=new int[length];
数组定义完毕。

那么,如何对数组进行初始化呢?很简单,跟普通的数组初始化方式差不多。

for(int i=0;i<length;++i)    p[i]=i;
最后不要忘记释放内存delete[] p。


 2、下面定义二位动态数组

二维数组的定义只是在一位数组的基础上加了个指针而已,即:指向指针数组的指针。
int col,row;cin>>col>>row;int **p=new int*[col];for(int i=0;i<col;++i)p[i]=new int[col];//建立一维数组每个元素指针指向的一维数组for(int i=0;i<col;++i)for(int j=0;j<row;++j)p[i][j]=j;for(int i=0;i<col;++i){for(int j=0;j<row;++j)cout<<p[i][j];cout<<endl;}
最后,同样不要忘记释放内存空间。
<pre name="code" class="cpp">for(int i=0;i<col;++i)    delete[] p[row];//如果没有前一个[]则只会释放二维数组一个元素指向的一维数组对应的空间



注意:只要用到new就要用delete


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 出了迁移证又想迁到其他地方怎么办 高中的会考如果没g合格怎么办 鞋子里自带的鞋垫坏了怎么办 入厕纸把私处伤了一下怎么办? 夏天做月子用姨妈巾热怎么办 涂了痔疮膏后怕粘到内裤怎么办 眼罩里面的蓝色液体干了怎么办 新买的饮水机有塑料味怎么办 白色衣服被洗衣液染荧光了怎么办 衣服碰到了酒店的毛巾被单怎么办 防晒喷雾弄衣服上有荧光怎么办 剑网3重置版删除后有残留怎么办 在超市买到变质的水果怎么办 微信官方电话一直打不通怎么办 对方欠货款股东换了不还怎么办 闲鱼买的东西确认收货有问题怎么办 不让微信好友看到吃鸡的名字怎么办 金鹰贵宾积分卡过期了怎么办 小宝机器人一直停在联网界面怎么办 手机版的有道云笔记忘记邮箱怎么办 钡灌肠复查钡剂排空不良怎么办 两个月宝宝灌肠后不排便怎么办 一岁宝宝肠套叠灌肠后拉肚子怎么办 苹果手机自带的天气没有了怎么办? 衣服在洗衣机里忘记拿出来怎么办 苹果se手机系统占内存太大怎么办 客人把饭店老板打了民警怎么办 商场嫌品牌低端不让入驻怎么办 带着孩子坐飞机座位不在一起怎么办 公司老板跑路了员工该怎么办 超市买的衣服防盗扣忘记取了怎么办 在超市买的衣服那个扣没取怎么办啊 超市散称商品条码老记不住怎么办 app账号密码忘记了怎么办注销难 幼儿老师遇到家长比较孩子该怎么办 发的微信公众号内容重复了怎么办 招嫖诈骗微信转账被骗怎么办 朋友在深圳龙岗被传销骗了要怎么办 怀疑家里人被传销组织骗去了怎么办 怀疑家人被骗进传销了该怎么办 b本扣3分了怎么办2018