从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);
}

我的理解:

这是定义指向char类型和const修饰符的指针。该指针不能更改。但是在接下来的几行中,我们更改了指针。

这是对的吗?看起来不行。 :(

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

最佳答案

const char * myname;

是指向常量(内容)的指针。您可以修改指针。例如myname = NULLmyname++,但是无法修改内容。
char * const myname;

是一个常量指针。相反是可能的。您不允许修改指针,但是您可以修改其指向的指针,例如*myname ^= ' ',如果小写字母,则使字母大写。

关于c - 在函数中使用const修饰符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51140804/

10-11 13:05