C语言中int array[][4]={ {0,1,2,1}, {3,4,5,1}, {6,7,8,1}}; int (*p)[4]=array; printf("%p\n",p+1); printf("%p\n",*(p+1));为什么两个打印的结果一样,p+1和*(p+1)没有区别吗
时间: 2024-04-20 08:22:45 浏览: 138
浅析int*p[ ]与int(*p)[ ]的区别
在C语言中,`int (*p)[4]` 定义了一个指向包含4个整数的数组的指针 `p`。而 `array` 是一个二维数组,其中每个子数组包含4个整数。
`p+1` 表示将指针 `p` 向后移动一个数组的长度(4个整数),即指向 `array` 中的下一个子数组。因此,`p+1` 的结果是指向 `array[1]` 子数组的指针。
`*(p+1)` 是对 `p+1` 指针进行解引用,即获取 `p+1` 指针所指向的值。由于 `p+1` 指向 `array[1]` 子数组的开头,因此 `*(p+1)` 的结果是 `array[1]` 子数组的地址。
因此,`p+1` 和 `*(p+1)` 打印的结果是一样的,都是指向 `array[1]` 子数组的地址。
阅读全文