`
qimo601
  • 浏览: 3414793 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

C++ 动态申请数组

阅读更多
方法1、C++使用vector方便生成: 
#include <iostream> 
#include <vector> 
#include <iomanip> 
using namespace std; 
int main() 
{ 
	int i, 
	j, 
	m, //行数 
	n; //列数 

	cout << "input value for m,n:"; 
	cin>>m>>n; 

	//注意下面这一行:vector<int后两个">"之间要有空格!否则会被认为是重载">>"。 
	vector<vector<int> > vecInt(m, vector<int>(n)); 
	for (i = 0; i < m; i++) 
	for (j = 0; j < n; j++) 
	vecInt[i][j] = i*j; 

	for (i = 0; i < m; i++) 
	{ 
		for (j = 0; j < n; j++) 
			cout<<setw(5)<<vecInt[i][j]<<":"<<setw(9)<<&vecInt[i][j]; 
		cout<<endl; 
	} 

	return 0; 
}
 
方法2:用vector可以,用裸指针也可以创建,只不过要小心使用,因为很容易造成内存泄露:
int main()

{
	//类型定义,将int*指针定义成Row
	typedef int* Row;

	int row, col;

	cin >> row >> col;

	Row* rows = new Row[row];

	for(int i = 0; i < row; ++i)

	{
		//有小(),直接将各项初始化为0
		//rows[i] = new int[col]();
		rows[i] = new int[col];

	}

	for(int i = 0; i < row; ++i)

	{

		delete [] rows[i];

	}

		delete [] rows;

}
 
 
3、C++动态申请多维数组
在C++中为数组动态分配内存的格式如下:

第一步:声明
       type (p)[常量1][常量2]...[常量n];
第二步:申请
       p=new type[x][常量1][常量2]...[常量n];
说明:先定义一个n维的数组指针,其中p是一个指针变量,x是一个整形变量,
      然后申请一个第一维为x的n+1维数组,记住只有第一维x可变。
举例:
   1、动态申请一个一维数组
      int *p;
      int x;
      cin>>x;
      p=new int[x];   
   2、动态申请一个二维整型数组
      int (*p)[10];
      int x;
      cin>>x;
      p=new int[x][10];
      若执行这段程序,给x输入3,则相当于定义一个3行10列的
      一个二维数组。实际是申请3102个存储单元,并把其首
      地址返回给p,通过p来操纵这个动态数组。
   3、动态申请一个三维数组
      int (*p)[8][6];
      int x;
      cin>>x;
      p=new int[x][8][6];
       
注意:
   1、申请成功与否,看p的值,若p的值为NULL,则说明申请不成功,
      反之,则申请成功。
   2、动态申请的存储单元,使用之后应及时返还给系统,方法是:
      delete p;即可。

(new 和 delete 、 new[] 和 delete[] 对应使用)
 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics