怎么做
- 题面里的虚线方框就是要填的空
- 点候选项,它会填进当前高亮的那个空
- 点已填好的空,可以把选项取回来重选
- 全部填满后「提交」才会亮起
卡住了就点右下角的 👩🏫 问 AI 老师,她会给提示但不直接给答案。
数组名就是首地址
int *p = a; p + i 指向 a[i],每 +1 走一个元素
2
4
6
8
10
a[0]
a[1]
a[2]
a[3]
a[4]
p
p+1
p+2
p+3
p+4
数组的元素在内存里一个挨一个排着。几条规则:
- 数组名 a 就是首元素的地址,
a和&a[0]一样,所以可以写int *p = a;。 p + i指向a[i]:加 i 是往后数 i 个元素,不是 i 个字节。*(p + i)、p[i]、a[i]、*(a + i)是同一个元素。注意*p + 1是先取值、再加 1。p++让 p 往后走一个元素;同一个数组里两个指针相减,得到相隔几个元素(p - a就是 p 指向的下标)。- a 是常量地址,不能
a++;p 是变量,可以。
#include <stdio.h>
int main(void)
{
int a[5] = {10, 20, 30, 40, 50};
int *p = a;
p = p + 2;
printf("%d %d %d\n", *p, *(p + 1), *p + 1);
p++;
printf("%d\n", (int)(p - a));
return 0;
}
第一行输出的三个数依次是【0】【1】【2】;第二行输出【3】。
请登录后作答。
去登录
👩🏫
AI
💬 题目评论
🔒
登录并作答后可看讨论