Правда ли, что (const T v) никогда не требуется в C? - PullRequest
2 голосов
/ 22 марта 2011

Например:

void func(const int i);

Здесь const не требуется, поскольку все параметры передаются по значению (включая указатели).

Это правда?

Ответы [ 2 ]

4 голосов
/ 22 марта 2011

Все параметры в C действительно передаются по значению, что означает, что фактический аргумент не изменится, независимо от того, включено ли это const или нет.

Однако это не означает, что const здесь "никогда не нужно". Нужно это или нет, зависит от того, чего вы хотите достичь.

Если вы хотите предотвратить любые попытки изменить параметр внутри функции, тогда const - это, конечно, .

Существует довольно популярное (и довольно разумное) руководство по кодированию, которое гласит, что параметры функции никогда не должны изменяться внутри функции, то есть, что в любой точке выполнения функции все параметры должны сохранять свои исходные значения. Согласно этому руководству, на самом деле было бы логично всегда включать это const во все объявления параметров.

1 голос
/ 22 марта 2011

const просто используется прекомпилятором, чтобы замечать ошибки ...

Обратите внимание, что это совершенно правильно:

void foo( const char * bar )
{
    char * baz = ( char * )bar;

    baz++;
}

Так что это никогда не требуется, но просто делаеткод более читабелен и сообщает, что указатель никогда не должен меняться ...

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