作业社区
探索学习新天地,共享知识资源!
慕少6127043 的学生作业:
#include int main() { int a[2][3] = { 10, 20, 30, 40, 50, 60 }; int (*p)[3] = a; // 指向包含3个int元素的数组的指针 printf("二维数组内容:\n"); for (int i = 0; i < 2; i++) { for (int j = 0; j < 3; j++) { printf("%d ", a[i][j]); } printf("\n"); } printf("\n通过多种方式输出数组数据:\n"); // 方式1: 通过数组名和下标访问 printf("1. 通过a[i][j]访问:\n"); for (int i = 0; i < 2; i++) { for (int j = 0; j < 3; j++) { printf("a[%d][%d] = %d\n", i, j, a[i][j]); } } // 方式2: 通过指针p访问 printf("\n2. 通过p[i][j]访问:\n"); for (int i = 0; i < 2; i++) { for (int j = 0; j < 3; j++) { printf("p[%d][%d] = %d\n", i, j, p[i][j]); } } // 方式3: 通过指针算术运算访问 printf("\n3. 通过*(*(p+i)+j)访问:\n"); for (int i = 0; i < 2; i++) { for (int j = 0; j < 3; j++) { printf("*(*(p+%d)+%d) = %d\n", i, j, *(*(p + i) + j)); } } // 方式4: 通过数组名指针运算访问 printf("\n4. 通过*(*(a+i)+j)访问:\n"); for (int i = 0; i < 2; i++) { for (int j = 0; j < 3; j++) { printf("*(*(a+%d)+%d) = %d\n", i, j, *(*(a + i) + j)); } } // 方式5: 通过一维视角访问 printf("\n5. 通过一维数组视角 *(p[0]+i) 和 *(p[1]+i)访问:\n"); for (int i = 0; i < 3; i++) { printf("*(p[0]+%d) = %d\n", i, *(p[0] + i)); // 第一行 } for (int i = 0; i < 3; i++) { printf("*(p[1]+%d) = %d\n", i, *(p[1] + i)); // 第二行 } // 方式6: 通过地址计算访问 printf("\n6. 通过地址计算 *((int*)p + i)访问:\n"); for (int i = 0; i < 6; i++) { printf("*((int*)p + %d) = %d\n", i, *((int*)p + i)); } return 0; }
+21