ВУЗ:
Составители:
Рубрика:
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.
Страницы
- « первая
- ‹ предыдущая
- …
- 31
- 32
- 33
- 34
- 35
- …
- следующая ›
- последняя »