#include <stdio.h>
int main() {
int arr[3][4];
int (*ptr)[4] = arr; // 初始化指向二维数组首元素的指针,这里指针指向一个包含4个int的数组
// 遍历并修改数组元素
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
*(*(ptr + i) + j) = i * 4 + j; // 修改元素值
printf("%d ", *(*(ptr + i) + j)); // 输出元素值
}
printf("\n");
}
// 内存管理:
// 在此例中,数组arr是在栈上分配的内存,当函数结束时,这块内存会自动释放,不会产生内存泄漏。
// 如果数组是通过动态内存分配(如malloc等函数)得到的,在使用完后需要使用相应的释放函数(如free)来释放内存,以避免内存泄漏。
// 例如,如果是这样分配内存:
// int **dynamicArr = (int **)malloc(3 * sizeof(int *));
// for (int i = 0; i < 3; i++) {
// dynamicArr[i] = (int *)malloc(4 * sizeof(int));
// }
// 使用完后释放内存:
// for (int i = 0; i < 3; i++) {
// free(dynamicArr[i]);
// }
// free(dynamicArr);
return 0;
}