设有以下定义和语句,则*(*(p+2)+1)的值为(____)。 int a[3][2]={10,20,30,40,50,60},(*p)[2]; p=a;
时间: 2023-09-07 20:04:30 浏览: 235
### 回答1:
*p指向a数组的第一个元素a[0][0],*(p+1)指向a数组的第二个元素a[1][0],*(*(p+1)+1)指向a数组的第二行第二列元素a[1][1],而*(p+2)超出了数组a的范围,因此该指针无效。因此,*(*(p+2)+1)的值不能确定。
### 回答2:
根据给定的定义和语句,可以推断出p是一个指向长度为2的整型数组的指针。而a是一个3行2列的二维数组,其中每一行都是一个长度为2的整型数组。
*p表示取指针p所指向的值,即代表一个长度为2的整型数组。而*(*(p+2)+1)表示取指针p指向的二维数组中的第3行数组的第2个元素的值。
根据p=a,可以知道p指向了数组a的首行的地址。也就是说,p指向a[0],即数组中的第一行。所以,p+2表示p向下移动2行,指向数组a中的第三行。接下来,*(p+2)表示取第三行数组的首元素的地址,也就是a[2]。
对于a[2],即{50,60},而*(p+2)+1表示a[2]向右移动1列,指向数组中第三行的第二个元素。即60。
所以,经过计算,*(*(p+2)+1)的值为60。
### 回答3:
根据题目给出的定义和语句,我们可以得到以下信息:
1. 定义了一个二维数组a[3][2],其中包含六个元素:10, 20, 30, 40, 50, 60。
2. 定义了一个指向数组a的指针p。
3. 将数组a的首地址赋给了指针p,即p = a。
那么*(*(p + 2) + 1)的值为什么呢?
首先,p是一个指向数组a的指针,p的值为a的首地址,即第一个元素的地址。
然后,p + 2表示将指针p向右移动两个数组的长度,即p指向了数组a的第三行的起始地址。
最后,*(*(p + 2) + 1) = *(p[2] + 1) = *(a[2] + 1) = *(30 + 1) = *31。
所以*(*(p + 2) + 1)的值为31。
阅读全文