怎么做
  1. 题面里的虚线方框就是要填的空
  2. 点候选项,它会填进当前高亮的那个空
  3. 点已填好的空,可以把选项取回来重选
  4. 全部填满后「提交」才会亮起
卡住了就点右下角的 👩‍🏫 问 AI 老师,她会给提示但不直接给答案。

数组名就是首地址

👁️ 20 人浏览 💬 0 人评论 ❤️ 添加收藏

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
💬 题目评论
🔒 登录并作答后可看讨论