牛骨文教育服务平台(让学习变的简单)
博文笔记

【C++】用指针定义多维可变长数组

创建时间:2016-11-04 投稿人: 浏览次数:242

我们都知道c++中的vector容器可以定义不定长数组,通过vector的嵌套可以实现多维,但显然vector对于空间和时间的消耗过大,而且代码将因此变得复杂。

本文介绍一种定义类似普通的数组,但允许多次定义长度,而不是一次定义后就不能,和拓展到高维的方法。


C++中数组变量本身其实是个指针,存储了这个数组的第一个元素的内存地址,这是因为数组中的元素内存地址是连续的。中括号是个地址偏移的运算。例如 int a[100];  ,a是数组的第一个元素地址,当我们引用a[i]时,实际上是引用了内存地址为(a+i*int类型字节数)的值。所以,一个语句a[i]=10也可以写成i[a]=10, 编译运行都是正确的。


定义一维数组的情况:


int length;//数组长度

int* a;

a=new int[length];//分配数组空间

a[1]=3;

a[0]=2;

a[2]=a[1]+4;

//可以像一般的数组一样访问


声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。