Понедельник, Июль 5th, 2010

Шпоры по С++

Для связи неинициализированного указателя новым участкам памяти используются операторы new, имя присваивается указателю явный адрес.
При объявлении указателя как он сам, так и его значение могут быть объявлены константами. Для этого используют модификатор const:
type const*const имя_указателя инициализатор;
Ближайший к имени указателя const относится к указателю, а const перед * определяет константность начального значения, связанного с указателем. В случае определения указателя на константу нельзя изменить значения константы, разорвать связь этого указателя с константой допустимо.
Работая с указателями, используют операцию получения адреса объекта — &. Для нее существуют естественные ограничения:
1)нельзя определить адрес неинициализированной константы;
2)нельзя определить адрес значения, полученного при выполнении скалярных выражений;
3)нельзя определить адрес переменной, относимой к классу памяти register.

4 Адресная арифметика. Типы указателей и операций над ними.
Для расширения возможностей адресной арифметики в языках С++ каждый указатель связан с некоторым типом данных. В качестве типа используется как основной, так и производный (массивы, функции, указатели, ссылки, константы, классы, структуры, объединения и определения пользователя). При доступе к памяти с помощью разыменованных указателей требуется информация не только о размещении, но и о размерах участка памяти. Эту информацию компьютер получает из типа указателя.
Операции над указателями можно сгруппировать следующим образом:
операция разыменования или доступа по адресу (*);
преобразование типов (приведение типов);
присваивание;
получение (взятия) адреса (&);
сложение и вычитание (аддитивные операции);
инкремент или автоувеличение (++);
декремент или автоуменьшение (- -) значение указателя изменяется на условную единицу;
операции отношения (сравнения).
Вычитание применяется к указателям на объекты одного типа и к указателю и целой константе. Вычитая два указателя одного типа, можно определить «расстояние» между двумя участками памяти. «Расстояние» определяется в единицах, кратных длине (в байтах) объекта того типа, к которому отнесен указатель. Разность указателей, адресующих два смежных объекта любого типа, по абсолютной величине всегда равна 1.
Из указателей можно вычитать целочисленные значения. При этом числовое значение указателя уменьшается на величину k*sizeof(type) , k — вычитаемое , type — тип объекта, к которому относится указатель.
Суммировать два указателя в С++ запрещено. Операция сложения указателей с целочисленными значениями выполняется аналогично вычитанию.
# include
void main()
{ float zero=0.0, pi=3.141593, euler=2.718282 ;
float *ptr=&euler ;
cout << "\n ptr=" << ptr << "*ptr=" << *ptr ; cout << "\n (ptr+1)=" << (ptr+1) << "*(ptr+1)=" << *(ptr+1) ;

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42

Категория: Шпоры