Они одинаковы.
Небольшой фон о const
:
Objective-C, как и C, использует Правило по часовой стрелке / спираль . В случае, когда у вас есть только модификаторы в левой части переменной (из foo), вы читаете вещи, идущие справа налево:
int * const * var;
читается: var - указатель на постоянный указатель на целое число .
Однако const
имеет тот же эффект, когда он до или после первого типа:
int const var; // constant integer
const int var; // constant integer, same as above
static
вместо этого влияет на всю переменную: это переменная, которая должна быть статической, а не элемент, на который она указывает или что-либо еще: указатель на целое число может использоваться как для указания на статическое целое число, так и на автоматический целое число без различия, и C не предоставляет синтаксис для объявления указателя, способного указывать только на статические переменные (или на автоматические переменные).
static int * x; // x is a static pointer to integer
int static * y; // as above y is a static pointer to integer
int * static z; // THIS SYNTAX IS NOT ALLOWED
// but if it was, it would mean the same thing
По этой причине я предпочитаю ставить его перед любым модификатором const
, но на самом деле это не имеет значения.
static const int * const * x; // this is what I do