wiki.php 用Markdown写wiki是一种什么样的体验?

CPP 创建动态数组.md

最后更新于 2019-10-06 15:00:15

C++的数组创建很简单: int ia[10]; 就可以创建一个包含10个元素的数组。
但有一个问题,比如这个代码:

int size = 50;  
int ia[size]; //错误!  

这是C++的一个顽疾,无法创建动态的数组。因为C++是将数组进行编译解析,在编译阶段为数组分配内存的;而动态的数组是要在运行期间进行动态内存分配。
如果要在C++中使用动态数组,就必须要使用指针技术。

详细看下面的代码:

#include <iostream>

using namespace std;

#define cp(s) cout << s << endl;
#define uint unsigned int

int main(int argc, wchar_t argv[])
{
// 创建动态数组
int size = 32; //数组大小
uint *ia = new uint [size]; //分配内存和数组指针
for(uint i = 0; i < size; i++) {
   ia[i] = 1 << i; //数组指针访问与数组访问几乎相同
   cp(ia[i]);
}
delete [] ia; //删除分配的数组

cin.get();
return 0;
}

可以发现,在动态指针中访问数组就如同访问普通的数组一样,使用 [x] 就可以访问了。因为静态数组的访问在C++内部中也是使用指针进行访问的,所以访问指针数组如同普通数组一样简单。当然,也一定要必须注意下标错误!
最后,删除数组指针使用 delete [] ... 来进行删除,需要注意!!!