Язык С++ и программирование на нем. Рейзлин В.И. - 33 стр.

UptoLike

Составители: 

35
char array[ ] = { ’h’, ’e’, ’l’, ’l’, ’o’, ’\n’,\0’};
Последнюю инициализацию разрешается выполнять проще:
char array[ ] = hello\n”;
Такой синтаксис инициализации разрешен только для строк. Ком-
пилятор сам вычислит необходимый размер памяти с учетом автомати-
чески добавляемого в конец строки символа \0с кодом 0, который яв-
ляется признаком завершения строки.
В языке С++ имя массива является константным указателем на
первый элемент этого массива:
int mas[20];
int pmas;
pmas = &mas[0];
Последний оператор можно записать и так: pmas = mas;
Операция индексирования массива [ ] имеет 2 операндаимя
массива, т.е. указатель, и индекс, т.е. целое: a[i]. В языке С++ любое
выражение указатель[индекс] по определению трактуется как
(указатель + индекс)
и автоматически преобразуется к такому виду компилятором.
Таким образом, a[3] эквивалентно (a + 3). Более того, это можно
записать даже так 3[a], так как это все равно будет проинтерпретирова-
но как (3+a). Здесь складываются указатель a и целое 3. В связи с этим
рассмотрим так называемую адресную арифметику.
5.3. Адресная арифметика
Указатель можно складывать с целым.
Если к указателю pa прибавляется целое приращение i, то прира-
щение масштабируется размером памяти, занимаемой объектом, на ко-
торый указывает указатель pa.
Таким образом, pa+i это адрес i-го элемента после pa, причем
считается, что размер всех этих i элементов равен размеру объекта, на
который указывает pa.
Итак, если a массив, то
a+i – адрес i-го элемента этого массива, т.е.
&a[i] равен a+i и a[i] равняется (a+i).
float b[10];
float pb=b;
pb++; // Это эквивалентно pb=pb+1.