首页 > 编程语言 > 详细

C++在数组元素个数未知情况下声明数组

时间:2015-03-26 20:37:58      阅读:157      评论:0      收藏:0      [点我收藏+]

  我们都从书上学习的方法,定义一个数组需要数组名、类型以及数组元素个数,一般定义必须明确元素的个数,否则无法通过编译。

  1、

int a[];

 

  2、

int n;
int a[n];

  就想上面这两种情况,肯定无法通过编译的。

  当然有一种情况不用定义元素个数,就是在声明的时候就将数组进行初始化赋值。

int a[] = {1,2,3,4}

  这种情况是可以的。

  那当我不想进行初始化赋值,又不能确定元素个数时,我们该如何声明这个数组呢?

  我相信很多人遇到过这个问题,我也一样。今天我终于找到这个问题的解决方案——利用动态声明的方式声明一个数组。

  首先,我们来看看一维数组的定义,代码如下:

int n;
int *a = new int[n];

  当然,动态声明一位数组,实质是根据n的值向内存申请了n*sizeof(int)大小的空间,在数组使用完之后,需要释放这个空间:

delete []a;

  那么二维数组如何通过动态声明进行声明呢?代码如下:

int **a = new int*[m];  //首先声明一组指向各行指针
for(int i = 0;i<m;i++)
    a[i] = new int[n]    //再声明各行的每列元素的指针

  同样,使用完数组还需释放内存空间:

for(int i = 0; i<m;i++)
    delete []a[i];
delete []a;

  最后要注意的一点是,动态声明的二维数组中,a[k]是一个int*类型,是一个指针,因此只能使用a[i][j]或*(*(a+i)+j)访问相应的元素,绝对不能使用a[i*n+j]的方式访问。

C++在数组元素个数未知情况下声明数组

原文:http://www.cnblogs.com/blogofpw/p/4369609.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!