[C] что это за тип ?

9173306234

int const * i;

qsk78

Константный указатель на integer?

margadon

вернее, указатель на константный int

yolki

указатель на константый интежер.
показательно с char *. вот например:

const char *s;

указатель на константный char. смысл такой: указатель можно менять (например, s++ но нельзя изменять значение по указателю (s[-4]='q'; - некорректно)

char * const s;

константный указатель на char. смысл такой: указатель нельзя менять (s-- - некорректно но можно писать по нему (s[3]='x'; - корректно)
случай топикстартера эквивалентен первому. int и const можно переставлять местами

margadon

компилера под рукой нет, но кажется эту нотацию надо читать справа налево - указатель на константный инт - то есть указатель можно менять, но вот по нему что-то записывать не получится

tokuchu

В примерах конкретно такой записи нет.
Это указатель на константу. "const int" и "int const" - одно и то же.

nikita270601

ну да, у сейчас как раз это и написано.

margadon

о, уже да

tokuchu

Проверил компилятором - он тоже думает, что это указатель на константу.

yolki

в стандартной библиотеке не даром пишут

int printf(const char * format, ...)

это есть некая гарантия того, что если я вызову

cnt=printf(fmt, arg1,arg2);

то функция printf внутри себя не изменит мне fmt

buka

9173306234

случай топикстартера эквивалентен первому. int и const можно переставлять местами
вот, это как раз и было интересно

Papazyan

В С нет модификатора const.

qsk78

Посмотри, например, раздел 6.7.3 стандарта ISO C99.

mira-bella

+1
const был и в самом первом стандарте, лишь до появления стандарта (в K&R С) const действительно отсутствовал
Оставить комментарий
Имя или ник:
Комментарий: