数组005 二维数组

 1 #include<iostream>
 2 using namespace std;
 3 
 4 //二维数组作为函数的参数
 5 //    注意此时的长度,是有多少行,也就是最外层有多少个
 6 void erweishuzu(int(*p)[4], int len)
 7 {
 8     for (int i = 0; i < len; i++)
 9         for (int ii = 0; ii < 4; ii++)
10             cout << p[i][ii] << endl;
11 }
12 
13 
14 int main()
15 {
16     //二维数组
17 
18     int arr2[3][4] = { 0,1,2,3,4,5,6,7,8,9,11,12 };
19 
20     //二维数组的指针
21     //
22     // 自己的理解,二维数组其实就是  一维数组  的 数组,每个元素都是一个一维数组
23     // 二维数组的指针,每跳一次,都是要跳过一个一维数组,它得知道你一个一维数组里面有多少个元素
24     // 所以在声明的时候,要告诉他最里层一维数组有多少个元素,就用指针名后面跟[列数]:int (*p1)[4]
25     //[ ]的优先级高于*,( )是必须要加的,如果赤裸裸地写作int *p[4],
26     // 那么应该理解为int *(p[4]),p 就成了一个指针数组,而不是二维数组指针
27     int (*p1)[4] = nullptr;
28     p1 = arr2;
29     cout << (void*)p1 << endl;
30     p1++;
31     cout << (void*)&arr2[1] << endl;
32     cout << (void*)p1 << endl; cout << *(*p1+1) << endl;
33     //int (*)[3]的值不能用于初始化 int* 类型的实体
34     cout << endl;
35     erweishuzu(arr2, 3);
36 
37     cout << endl;
38     //三维数组
39     int arr3[3][2][3] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 };
40 
41     //三维数组指针也是一样了
42 
43     int(*p2)[2][3] = arr3;
44 
45     cout << (void*)p2 << endl;
46     p2++;
47     cout << (void*)p2 << endl; cout << **(*p2 + 1) << endl;
48 
49 
50 
51 
52 }

 

posted @ 2024-07-16 14:18  墨点Moz  阅读(20)  评论(0)    收藏  举报