怎么做
- 题面里的虚线方框就是要填的空
- 点候选项,它会填进当前高亮的那个空
- 点已填好的空,可以把选项取回来重选
- 全部填满后「提交」才会亮起
卡住了就点右下角的 👩🏫 问 AI 老师,她会给提示但不直接给答案。
二维数组的行和列地址
int a[3][4]:a + i 一次跳过一整行(4 个 int)
a + 0
a + 1
a + 2
二维数组 int a[3][4] 可以看成 3 行,每一行是一个有 4 个 int 的一维数组,在内存里一行接一行连续存放。
a + i指向第 i 行:加 1 一次跳过一整行(4 个 int)。a[i]和*(a + i)一样,是第 i 行首元素的地址;a[i] + j指向a[i][j]。- 所以
a[i][j]等于*(a[i] + j),也等于*(*(a + i) + j)。 - 行指针:
int (*p)[4] = a;,p 指向「含 4 个 int 的一行」,p + 1 跳一行,用法和 a 一样。括号不能省:int *p[4]是「4 个指针组成的数组」,后面再学。 - 普通的
int *q = a[0];只认一个 int,q + 1 只走一格,可以从 a[0][0] 一直走到最后。
#include <stdio.h>
int main(void)
{
int a[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};
int (*p)[4] = a;
int *q = a[0];
printf("%d\n", *(*(a + 1) + 2));
printf("%d\n", *(a[2] + 1));
printf("%d\n", *(*(p + 2) + 3));
printf("%d\n", *(q + 5));
return 0;
}
四行输出依次是【0】【1】【2】【3】。
请登录后作答。
去登录
👩🏫
AI
💬 题目评论
🔒
登录并作答后可看讨论