После того как указатель будет объявлен, его обязательно нужно инициализировать. В этом случае type может быть любым типом, в том числе и пользовательским. Получившийся указатель будет трактоваться как
Также один указатель можно присвоить другому. Правила этой операции достаточно просты и перечислены в следующем списке.
? Указателю типа void можно присвоить любой другой указатель.
? Никакому указателю не может быть присвоен указатель типа void.
? Указатель на объект и указатель на функцию не могут быть присвоены один другому.
? Указатели на объекты одного типа могут быть присвоены один другому.
? Указатели на объекты разного типа могут быть присвоены один другому только при соблюдении некоторых условий.
Помимо этого существует несколько правил арифметики указателей. Они, конечно, не являются обычными переменными, но язык C++ позволяет выполнять некоторые операции, которые приведены в следующем списке.
? Над указателями можно выполнять операцию инкремента и декремента. В этом случае указатель будет увеличиваться на размер объекта, на который он указывает.
? Указатели можно вычитать, но только в том случае, если это указатели на элементы одного и того же массива.
? Указатели можно сравнивать.
Массивы
Синтаксис объявления массива достаточно прост.type declarator
Эта конструкция объявляет массив, состоящий из constant-expression элементов типа type. Следующий фрагмент кода можно рассматривать как пример объявления массивов.
float v[3]; //массив из трех элементов с плавающей точкой v[0], v[1], v[2] char* а[32]; //массив из 32 указателей на char а[0]…а[31]
Количество элементов массива не может изменяться после объявления. При необходимости объявить многомерный массив он объявляется массивом массивов, как это показано ниже.
int d[10][20];
Эта команда объявляет массив d из десяти массивов по 20 элементов типа int в каждом из них. Начальное значение массиву можно присвоить через указание списка значений.
int v1[] = {1, 3, 5, 7}; char v2[] = {\'a\',\'b\',\'d\',\'l\',0};
Если размер массива не объявлен, то он вычисляется по количеству инициализирующих элементов. Если размер объявлен, то количество элементов не может быть больше объявленного. Количество элементов может быть меньше объявленного, и в этом случае недостающие элементы инициализируются нулевым значением.
Массив удобно инициализировать строковым литералом. В C++, как и в С, в строковом литерале на один символ больше, чем используется при записи, таким образом, в строковом литерале «???» будет 4 символа.
Имя массива является указателем на его первый элемент. При направлении в строку массива символов, туда помещается содержащаяся в массиве строка. Если же мы отправим в строку массив, то туда будет помещен адрес первого элемента массива, а при разыменовании массива будет получено значение его первого элемента.