C++动态创建二维数组
之前我一直被这个问题所迷惑,那时我是用的是C,而不是C++。
在使用malloc函数的时候,我可能是有些东西处理得不太好,学的不精,在那时一直没有实现二维数组的生成。
今天在实验室正好要写一个console的小游戏玩,就顺手重拾了这个问题。不过在这里,我用的是C++。
这个小游戏的名字是MAP的,所以需要创建一个地图。
之前测试的方向控制成员函数用的是一个二维数组变量,直接声明的。
但是我觉得如果能够添加一个地图大小控制那么乐趣就会有一定提升。
首先,创建一个一维数组需要一个一维指针。
形式如下:
View Code
1 int *valinttemp=NULL; 2 valinttemp=new int [10];//Or someother variables
这就完成了一个基础的数组的创建,非常简单。
而二维数组,需要一个二维指针吗?
先思考一个问题,指针是什么?
现在关于C\C++指针的讲义非常多,我本人也写过,在这里不再多说,只提要点。
指针包含的信息主要有两种:1 地址 2 指向的类型
创建二维数组,就是创建一个元素为指针的指针数组。
如果你不知道指针数组和数组指针的区别,我建议你去查一查。
所以创建一个二维数组首要步骤就是创建一个二维指针。
然后将其创建成指针数组,最后创建成二维数组。
一个很简易的代码:
1 int intvalT; 2 int **intptemp; 3 cin>>intvalT; 4 intptemp=new int *[intvalT]; 5 for(int i=0;i<intvalT;i++) 6 { 7 intptemp[i]=new int [10]; 8 for(int j=0;j<10;j++) 9 intptemp[i][j]=12; 10 } 11 for(int i=0;i<intvalT;i++) 12 { 13 for(int j=0;j<10;j++) 14 cout<<intptemp[i][j]<<ends; 15 cout<<endl; 16 }
That‘s all.