|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Указатель на voidПрименяется в тех случаях, когда конкретный тип объекта, адрес которого требуется хранить, не определен. Указатель может быть константой или переменной, а также указывает на константу или переменную. Int I; //целая переменная Const int ci = 1; //целая константа Int * pi; //указатель на целую переменную Const int * pci; //указатель на целую константу Int * const cp = &I; //указатель-константа на целую переменную Const int * cont cpc = &ci;//указатель-константа на целую переменную Доступ к выделенным участкам динамической памяти, называемым динамическими переменными, производится только через указатели. Время жизни динамических переменных – от точки создания до конца программы или до явного освобождения памяти. В С++ используются два способа работы с динамической памятью. Первый использует семейство функции malloc и достался в наследство от С, второй использует операции new и delete. 1. Присваивание указателю адреса существующего объекта: a. С помощью операции получения адреса: Int a=5; //целая переменная Int*p=&a; //в указатель записывается адрес а Int*p(&a); //то же самое другим способом b. С помощью значения другого инициализированного указателя; Int*r=p; c. С помощью имени массива или функции, которые трактуются как адрес: Int b[10]; //массив Int*t=b; //присваивание адреса начала массива Void f(int a){/*…*/} //определение функции Void (*pf)(int); // указатель на функцию Pf=f; //присваивание адреса функции 2. Присваивание указателю адреса области памяти в явном виде: Char* vp=(char *) oxB8000000; Здесь 0x680000000 – шестнадцатеричная константа, (char *) – операция приведения типа: константа преобразуется к типу <указатель на char>. 3. Присваивание пустого значения: Int* suxx = NULL; Int* rulez = 0: 4. Выделение участка динамической памяти и присваивание её адреса указателю: · С помощью операции new: Int* n=new int; //1 Int* m= new int (10); //2 Int* q= new int [10]; //3 · C помощью функции malloc: Int* u= (int*)malloc(sizeof(int));// 4 При интерпретации сложных описаний необходимо придерживаться правила <изнутри наружу>: 1. Если справа от имени имеются квадратные скобки, это массив, если круглые – это функция; 2. Если слева есть звездочка, это указатель на проинтерпретированную ранее конструкцию; 3. Если справа встречается закрывающая круглая скобка, необходимо применить приведенные выше правила внутри скобок, а затем переходить наружу; 4. В последнюю очередь интерпретируется спецификатор типа. Ссылки – представляет собой синоним имени, указанного при инициализации ссылки. Ссылку можно рассматривать как указатель, который всегда разыменовывается. Формат объявления ссылки: Тип%имя; Где тип – это тип величины, на которую указывает ссылка, & - оператор ссылки, означающий, что следующее за ним имя является именем переменной ссылочного типа. Правила использования ссылок: · Переменная-ссылка должна явно инициализироваться при её описании, кроме случаем, когда она является параметром функции, описана как extern или ссылается на поле данных класса. · Тип ссылки должен совпадать с типом величины, на которую она ссылается. · Не разрешается определять указатели на ссылки, создавать массивы ссылок и ссылки на ссылки. Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.) |