题目

指针遍历数组并打印

思路

本题用指针从首到尾遍历数组并打印每个元素(与 a[i] 等价)。

p initially 指向 a[0],每轮输出 *pp++;或用 while (p<a+n) 控制不越界。

解题分析

数组名在表达式中退化为首元素指针,p<a+n 与下标等价。指针递增比 a[i] 写法更贴近 C 底层,别越过 a+n。

完整程序

#include <stdio.h>

int main(void)
{
    int n, a[200];
    if (scanf("%d", &n) != 1 || n < 1 || n > 200) {
        return 1;
    }
    for (int i = 0; i < n; i++) {
        scanf("%d", &a[i]);
    }
    for (int *p = a; p < a + n; p++) {
        printf("%d ", *p);
    }
    putchar('\n');
    return 0;
}

运行示例

输入:

3
10 20 30

输出:

10 20 30