来自 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 = NULL
,myname++
,但无法修改内容。
char * const myname;
是一个常量指针。相反的情况是可能的。您不能修改指针,但可以修改它指向的内容,例如*myname ^= ' '
,如果字母是小写,则使字母大写。