C语言一个关于通过指针修改值的问题

img

本意是打算输出 'l' 前面的字符串,先用指针锁定第一个 ‘l' 的位置在修改其为 '\0' 强制结束,但是编译器不给过,没太理解他给的提示,大lao们帮帮忙,谢谢。

const 声明的字符串不能被修改
你去掉const即可

#include <stdio.h>
#include <string.h>

int main()
{
    char s[]="hello";
    char *p= strchr(s,'l');
    *p = '\0';
    printf("%s", s);

    return 0;
}

img

char const * p和const char * p是一样的意思,都是申明一个常量指针。常量指针表明指针指向的内容是不可以被修改的。所以你这里 * p = '\0'会报错,因为你试图修改常量指针p的首地址存储内容
还有一种是char * const p,它与上面两个不一样,它是保护指针不被修改,但指针指向的内容是可以修改的。如果是这种定义,那么 * p = '\0'是可以的。
希望对你有所帮助