首页 > 试题广场 >

(C++部分)请问下列代码的输出是多少()

[单选题]
(C++部分)请问下列代码的输出是多少()

  • 7
  • 3
  • 8
  • 4
<p>把m显性转化成三行四列的数组并将首元素的地址赋给指向三行四列二维数组的指针p?</p><p><br></p>
发表于 2020-12-18 16:35:32 回复(0)
数组指针,说明指针指向的是一个数组,而int(*p)[4]说明p指向的是一行含有四个元素的二维数组,而(int(*)[4])m是将m的类型由int*强转为int(*)[4]类型,所以根据m数组的元素个数,p就可以理解为指向了一个三行四列的二维数组的指针啦
发表于 2022-10-03 11:10:50 回复(1)
int(*p)[4]=(int(*)[4])m; 在p中存放的数据按照4个一组存放,通过m给p赋值后p指向的地址中存放的数据格式为:{(1,2,3,4),(5,6,7,8),(9,0)},相当于二维数组: 1 2 3 4 5 6 7 8 9 0 所以输出p[1][2]就是第二行第三列的值 7
发表于 2021-03-05 17:06:55 回复(0)
只是一个三行四列的矩阵。 P一二选取的就是第二行第三列的数。七。
发表于 2020-08-26 16:25:48 回复(2)

1. 分析数组 m 的内存存储

数组 m 初始化为 int m[] = {1,2,3,4,5,6,7,8,9,0};,在内存中是连续存储的,元素顺序为:
m[0]=1, m[1]=2, m[2]=3, m[3]=4, m[4]=5, m[5]=6, m[6]=7, m[7]=8, m[8]=9, m[9]=0。

2. 分析指针 p 的类型与含义

int (*p)[4] 表示:p 是一个指向 “包含 4 个 int 的数组” 的指针
代码中 p = (int (*)[4])m; 是将一维数组 m 的首地址,强制转换为 “指向每行 4 个 int 的二维数组指针”。这相当于把一维数组 m 逻辑上视为 “每行有 4 个元素的二维数组”

3. 计算 p[1][2] 对应的元素

将 m 视为 “每行 4 个元素的二维数组” 后:
    p[0] 对应第 0 行,包含元素 m[0]~m[3](即 1,2,3,4);
    p[1] 对应第 1 行,包含元素 m[4]~m[7](即 5,6,7,8);
    p[1][2] 表示 “第 1 行的第 2 列元素”(列索引从 0 开始),即 m[4 + 2] = m[6]。

4. 确定 m[6] 的值

由数组初始化可知,m[6] = 7。
因此,代码的输出是 7

以上内容 复制来源于豆包
发表于 2025-10-06 23:27:39 回复(0)
???确定这个解析属于这题吗
发表于 2025-08-28 11:58:06 回复(0)
int(*)[4]这一部分怎么看
发表于 2022-12-24 15:49:56 回复(0)