int a[5][4], (*p)[4]=a; 数组a的首地址为100,*(p+2)+3等于( )。 [A] 116 [B] 118 [C] 120 [D] 122
时间: 2023-11-11 11:03:40 浏览: 108
p指向a数组的首地址,即100。p+2表示移动2个二维数组的长度,即8*2=16个字节,所以(p+2)指向的地址为100+16=116。*(p+2)表示取出第3个二维数组的首地址,即a[2]的地址,而该地址加上3个int类型的长度,即3*4=12个字节,所以最终结果为116+12=128,即选项[D] 122。
相关问题
一个数组int a[5],*p
,请问以下代码输出什么?
a[0] = 1;
a[1] = 2;
a[2] = 3;
a[3] = 4;
a[4] = 5;
p = &a[2];
cout << *p << endl;
p++;
cout << *p << endl;
p--;
cout << *p << endl;
cout << *(p+2) << endl;
输出结果:
3
4
3
5
解释:
1. `p = &a[2];` 将指针p指向a[2],即数组中的第三个元素,其值为3。
2. `p++;` 将指针p向后移动一个位置,指向a[3],即数组中的第四个元素,其值为4。
3. `p--;` 将指针p向前移动一个位置,指向a[2],即数组中的第三个元素,其值为3。
4. `*(p+2)` 先将指针p向后移动2个位置,指向a[4],即数组中的最后一个元素,其值为5,再用解引用符*取出该元素的值。
int a[5][4], (*p)[4]=a;,数组a的首地址为100,*(p+2)+3等于?
首先,指针 `p` 指向数组 `a` 的第一行,即 `a[0]`。因此,`p+2` 指向数组 `a` 的第三行,即 `a[2]`。
又因为 `p` 是一个指向包含 4 个元素的数组的指针,所以 `*(p+2)` 表示数组 `a[2]`,也就是一个包含 4 个元素的一维数组。
最后,`*(p+2)+3` 表示数组 `a[2]` 中的第 4 个元素,即 `a[2][3]`。
因此,`*(p+2)+3` 等于 `a[2][3]`,即数组 `a` 中位于第三行第四列的元素。
综上所述,`*(p+2)+3` 的值取决于数组 `a[2][3]` 的值,无法直接计算。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)