Использование const модификатора в функции - PullRequest
0 голосов
/ 02 июля 2018

Из сценариев ядра 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?

1 Ответ

0 голосов
/ 02 июля 2018
const char * myname;

- указатель на константу (контент). Вам разрешено изменять указатель. например myname = NULL, myname++, но изменение содержимого невозможно возможно.

char * const myname;

- постоянный указатель. Возможно обратное. Вы не можете изменять указатель, но вам разрешено изменять то, на что он указывает, например, *myname ^= ' ', который делает букву заглавной, если она строчной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...