码迷,mamicode.com
首页 > 编程语言 > 详细

C++二维数组的动态声明

时间:2017-04-24 12:16:47      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:rand   分配   main   iostream   []   cout   return   name   new   

int **a  =  new int* [m]   //分配一个指针数组,将其首地址保存在a中   、

for(int i = 0; i < m; i++)   //为指针数组的每个元素分配一个数组

       a[i] = new int [n];

相当于产生了一个二维数组 a[m][n]了

静态声明的数组可以有公式(假设也是m行n列)

                                          b[i][j] = b[i*n +j]

这是因为数组b是连续的一片内存,而动态声明的数组任意的a[k]都是一个int*类型,即一个地址,所以只能a[i][j]或者*(*(a+i) + j)来访问数组的元素,而不能a[i*n + j]使用。

动态声明的数组,使用后需要释放内存。

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

      delete []a[i];

delete []a;

 1 #include <iostream>
 2 #include <stdlib.h>
 3 
 4 using namespace std;
 5 
 6 
 7 int main()
 8 {
 9     int row,column;
10     cin >> row >> column;
11     //申请空间
12     int **a =  new int* [row];    
13     for(int i = 0; i < row; i++)
14         a[i] = new int[column];
15 
16     //使用空间
17     for(int j = 0; j < row; j++)
18         for(int k = 0; k < column; k++)
19             a[j][k] = rand() % 100;
20     
21     for(int j = 0; j < row; j++)
22     {
23         cout << endl;
24         for(int k = 0; k < column; k++)
25             cout << a[j][k] << " ";
26     }
27     //释放空间
28     for(int i = 0; i < row; i++)
29         delete []a[i];
30     a = NULL;
31 
32     return 0;
33 }

 

 1  //方法二,利用vector创建二维数组
 2 #include <iostream>
 3 #include <stdlib.h>
 4 
 5 using namespace std;
 6 
 7 
 8 {  
 9     int row,column;  
10     cin>>row>>column;  
11   13     //申请空间  
14     vector<vector<int> > a(row,vector<int>(column));  
15       
16   
17     //使用空间  
18     for(int j = 0;j < row;j++)  
19         for(int k = 0;k< column;k++)  
20             a[j][k] = rand()%100;  
21   
22     for(int j = 0;j < row;j++)  
23     {  
24         cout<<endl;  
25         for(int k = 0;k< column;k++)  
26         {  
27             a[j][k] = rand()%100;  
28             cout<<a[j][k]<<"     ";  
29         }  
30     }         
31     return 0;       
32 }  

 

C++二维数组的动态声明

标签:rand   分配   main   iostream   []   cout   return   name   new   

原文地址:http://www.cnblogs.com/boluo007/p/6755540.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!