c - 在函数中使用 const 修饰符

标签 c constants

来自 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/

相关文章:

c - EXC_BAD_ACCESS 尝试访问 OS X 钥匙串(keychain)时

c - 如何使用管道在线程之间发送数组?

ios - 预期的']'和无关的']'在':'之前

c++ - 不同编译器中的纯/常量函数属性

c - inode 中的 block 号是什么意思?

c - 如何为CUDA优化Conway的人生游戏?

c - 二维数组和指针。

c++ - 如何显示循环控制变量在 C++ for 循环体内没有改变?

arrays - 如何在const中定义数组?

c++ - 可内存的 32 位值作为常量