#include <stdio.h>
int main()
{
int a[3][2] = {0, 1, 2, 3, 4, 5};
int i, j;
printf("%d\n", **a);
printf("%d\n", **(a + 1)); // a表示第一个小数组的地址,+1就是指向下一个小数组
printf("%d\n", *((*a) + 1)); // 理解为a[0]首元素的地址,+1就是指向a[0]的下一个元素(纯属个人理解!!!)
printf("%p %p\n", a, a + 1);
printf("%p %p\n", &a[0], &a[1]); // (*a) + i change colunm 列
printf("%p %p\n", &a[0][0], a);
printf("%p %p\n", &a[1][0], a + 1); // a + 1 change row 行
for (i = 0; i < 3; i++)
{
for (j = 0; j < 2; j++)2
{
printf("a[%d][%d] = %d\t", i, j, a[i][j]);
printf("*(*(a + %d) + %d) = %d\n",i, j, *(*(a + i) + j));
}
}
return 0;
}
int main()
{
int a[3][2] = {0, 1, 2, 3, 4, 5};
int i, j;
printf("%d\n", **a);
printf("%d\n", **(a + 1)); // a表示第一个小数组的地址,+1就是指向下一个小数组
printf("%d\n", *((*a) + 1)); // 理解为a[0]首元素的地址,+1就是指向a[0]的下一个元素(纯属个人理解!!!)
printf("%p %p\n", a, a + 1);
printf("%p %p\n", &a[0], &a[1]); // (*a) + i change colunm 列
printf("%p %p\n", &a[0][0], a);
printf("%p %p\n", &a[1][0], a + 1); // a + 1 change row 行
for (i = 0; i < 3; i++)
{
for (j = 0; j < 2; j++)2
{
printf("a[%d][%d] = %d\t", i, j, a[i][j]);
printf("*(*(a + %d) + %d) = %d\n",i, j, *(*(a + i) + j));
}
}
return 0;
}