用法中的const修饰符

2 c const

从linux内核脚本/ mod/modpost.c:

static int is_vmlinux(const char *modname)
{
    const char *myname;

    myname = strrchr(modname, '/');
    if (myname)
            myname++;
    else
            myname = modname;

    return (strcmp(myname, "vmlinux") == 0) ||
           (strcmp(myname, "vmlinux.o") == 0);
}
Run Code Online (Sandbox Code Playgroud)

我的理解:

这是定义指向char类型和const修饰符的指针.此指针无法更改.但是在接下来的行中我们改变了指针.

这是对的吗?看起来没有.:(

为什么在这段代码中使用const?在这做什么const?我们可以不用const写吗?

snr*_*snr 5

const char * myname;
Run Code Online (Sandbox Code Playgroud)

是指向常量(内容)的指针.您可以修改指针.如myname = NULL,myname++但内容的修改是不是可能.

char * const myname;
Run Code Online (Sandbox Code Playgroud)

是一个常量指针.反之亦然.你是不是允许修改指针,但你都可以修改它指向例如*myname ^= ' ',这使得字母大写,如果是小写.