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 }
标签:数组,int,len,ii,二维,005 From: https://www.cnblogs.com/modianmoz/p/18305134