1 #include <iostream>
2 #include<cstring>
3 using namespace std;
4
5 int main()
6 {
7 //创建一个n*m的连续空间
8 int **p;
9 int n,m;
10 cin>>n>>m;
11 p = new int*[n];
12
13 //原来的方法
14 /*
15 for(int i=0 ;i<n ; i++)
16 {
17 *(p+i) = new int[m];
18 }
19 memset(*p,0,sizeof(int)*n*m);
20 */
21
22 //新方法,可以使用memset
23
24 /* *p = new int[n*m];//先创建连续的全部空间
25 for(int i=0;i<n;i++)
26 {
27 *(p+i) = *p + i*m;//将各个头点与连续空间相应点匹配
28 }
29 memset(*p,0,sizeof(int)*n*m);
30 */
31
32 //输出
33 for(int i =0;i<n;i++)
34 {
35 for(int j =0 ;j<m ;j++)
36 {
37 cout<<p[i][j]<<\' \';
38 }
39 cout<<endl;
40 }
41 return 0;
42 }
memset 对一个连续空间进行操作,若空间不连续,那么这个函数won‘t work。
我们先测试一下原来的方法
发现输出错误,说明这个空间有时候连续,有时候不连续。
那么我们试试新方法。
输出正常,说明整个空间都是连续的。