鱼C论坛

 找回密码
 立即注册
查看: 1545|回复: 1

求助一下

[复制链接]
发表于 2023-10-30 23:49:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
这题的四个空分别要填什么,谢谢
Screenshot_2023-10-30-23-48-32-907_com.android.browser.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-10-30 23:50:02 | 显示全部楼层
问题描述:
请问以下代码片段中,第11、12、13、14行分别应该填写什么?
  1. int main()
  2. {
  3.     int a[3][4] = { {1,3,5,7}, {9,11,13,15}, {17,19,21,23} };
  4.     int (*p)[4], i, j;
  5.     p = ________;     // 第11行
  6.     for (i = 0; i < 3; i++)
  7.     {
  8.         for (j = 0; j < 4; j++)
  9.             printf("%d ", *(*(p+i)+j));
  10.         printf("\n");
  11.     }
  12.     return 0;
  13. }
复制代码

回答:
在这个程序中,a是一个二维数组,其中包含3行4列共计12个元素。由于数组的内存布局是连续的,可以将二维数组看作是一维数组的数组,即一个包含了3个长度为4的一维数组的数组。因此,我们可以将p定义为一个指向数组的指针,每个数组中有4个元素。

具体来说,在第11行需要填写p = a。在这里,我们将p指向数组a的第一个元素,也就是第一个长度为4的一维数组。

在循环中,我们使用*(*(p+i)+j)来访问数组中的元素。这里的p+i首先指向了第i+1个长度为4的一维数组,然后*(p+i)+j指向该数组中的第j+1个元素。最后,*(*(p+i)+j)用于获取该元素的值。

希望对你有所帮助!如果还有其他问题,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-22 03:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表