2017-02-19 30 views
0

A имеет функцию, которая принимает «данные const const» как один из своих аргументов, и я понятия не имею, что это значит. Я ожидал, что эта функция примет массив, поэтому я чувствую, что это массив, но я понятия не имею, как это сделать. Отсутствие запятой отбрасывает меня. Это один из аргументов.Что означает выражение (int const * const b) в C?

EDIT: Хорошо, я не понимал, что const было ключевым словом. В любом случае это указывает на массив? Потому что я ожидаю массив.

+2

'const' имеет специфическое значение, очень отличающееся от чего-то типа' a'. – user2357112

+3

Кроме того, [здесь, есть декларация C -> английский переводчик] (http://cdecl.org/). – user2357112

+0

@ user2357112 А, это имеет большой смысл. Я изменил название. – RothX

ответ

2

const это ключевое слово, которое относится к аргументу слева (или справа, если нет ничего, слева) и обозначает неизменность (Уст-Ness).

  • int const* - указатель на неизменяемый (Const) межд (вы не можете использовать этот указатель мутировать Int)

  • int const*const - неизменяемый указатель на неизменяемый Int

+0

Спасибо, но возможно ли, что имеется массив? Я ожидаю, что эта функция примет массив. – RothX

+1

В C. массивов нет параметров массива. Массивы, переданные через параметры, переводятся в указатели на первый элемент массива. 'int const * const' вполне может представлять массив' int'. – PSkocik

+0

Я вижу. Итак, как я могу получить доступ к другим элементам, кроме первого в массиве? – RothX

2

Два средства:

  1. Указатель постоянен.
  2. Данные (указывающие на указатель) постоянны.