来自 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 = NULL
,myname++
,但不能修改内容。
char * const myname;
是一个常量指针。相反的情况是可能的。您不允许修改指针,但您可以修改它指向的内容,例如*myname ^= ' '
,如果字母是小写,则字母大写。
关于c - 在函数中使用 const 修饰符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51140804/