指针系列六(指针与二维数组)
//指针与二维数组
int array[4][5] = { 0 };
printf("sizeof int: %d\n", sizeof(int));
printf("array: %p\n", array);
printf("array + 1 : %p\n",array +1);
//上面程式证明 array+1,地址加了20,每一个整形四个字节,相当于跨越了五个字节
//证明了array是指向包含了五个元素的数组的指针
//指针解引用
int array[4][5] = { 0 };
int i, j, k=0;
for ( i = 0; i < 4; i++)
{
for ( j = 0; j < 5; j++)
{
array[i][j] = k++;
}
}
printf("*(array+1): %p\n",*(array +1) );
printf("array[1] :%p\n", array[1]);
printf("&array[1][0]:%p \n", &array[1][0]);
printf("**(array+1): %d\n", **(array + 1));
//-----------------------
下面相等
printf("*(*(array+1)+3): %d\n", *(*(array + 1) + 3));//第二行第四列 8
printf("array[1][3]:%d \n", array[1][3]);//第二行第四列 8
//-----------------------
// 数组指针与二维数组
int array[2][3] = { {0,1,2},{3,4,5} };
int (*p)[3] = array;
printf("**(p+1):%d\n", **(p + 1));
printf("**(array+1):%d\n", **(array + 1));
printf("array[1][0]:%d\n", array[1][0]);
printf("*(*(p+1)+2):%d\n", *(*(p + 1) + 2));
printf("*(*(array+1)+2):%d\n", *(*(array + 1)+ 2));
printf("array[1][2]:%d\n", array[1][2]);

浙公网安备 33010602011771号