题目

const 与指针:只读遍历字符串

思路

本题用 const char * 只读遍历字符串并输出,不能修改串内容。

*s 非结束符时,输出当前字符并令指针后移(putchar(*s++))。const 表示不能通过该指针改字符,误赋值会在编译阶段报错。

解题分析

const char *p 表示不能通过 p 改字符,p 本身可以指向别处。只读遍历用 const 表达意图,写入会编译报错。

完整程序

#include <stdio.h>

int main(void)
{
    char s[500];
    if (scanf("%499s", s) != 1) {
        return 1;
    }
    for (const char *p = s; *p; p++) {
        printf("%c\n", *p);
    }
    return 0;
}

运行示例

输入:

hi

输出:

h
i