C语言 函数中的用法常量修饰符



来自 linux kernel scripts/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);
}

我如何理解:

这是定义指向字符类型和 const 修饰符的指针。无法更改此指针。但是在接下来的几行中,我们更改指针。

正确吗?看起来没有。:(

为什么在此代码中使用 const?康斯特在这里做什么?我们可以在没有常量的情况下写它吗?

const char * myname;

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

char * const myname;

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

最新更新