Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Ссылочные типы данных и их применениеСодержание книги
Поиск на нашем сайте Ссылочный тип, иногда называемый псевдонимом, служит для задания объекту дополнительного имени. Ссылка позволяет косвенно манипулировать объектом, точно так же, как это делается с помощью указателя. Однако эта косвенная манипуляция не требует специального синтаксиса, необходимого для указателей. Обычно ссылки употребляются как формальные параметры функций. В этом разделе мы рассмотрим самостоятельное использование объектов ссылочного типа. Ссылочный тип обозначается указанием оператора взятия адреса (&) перед именем переменной. Хотя, как мы говорили, ссылка очень похожа на указатель, она должна быть инициализирована не адресом объекта, а его значением. Таким объектом может быть и указатель. int ival = 1024; // правильно: refVal - ссылка на ival int &refVal = ival; // ошибка: ссылка должна быть инициализирована int &refVal2;
Указатели предназначены для хранения адресов областей памяти, а cсылка представляет собой синоним имени, указанного при инициализации ссылки. 26. Указатели в языке C++. Доступ к данным по указателю Каждая переменная, которую вы объявляете в программе, имеет адрес – номер ячейки памяти, в которой она расположена. Адрес является неотъемлемой характеристикой переменной. Можно объявить другую переменную, которая будет хранить этот адрес и которая называется указателем. Указатели применяются при передаче в функцию параметров, которые мы хотим изменить, при работе с массивами, при работе с динамической памятью и в ряде других случаев. Объявление указателя имеет следующий синтаксис: <тип> *<идентификатор> [ = <инициализатор>]; Существуют две операции, которые имеют отношение к работе с указателями. Этими операциями являются: · операция взятия адреса (адресация) &; · операция взятия значения по адресу (косвенная адресация или разыменование) *. int a, *p; p = &a; // Переменной p присваивается адрес переменной a *p = 0; // Значение по адресу, находящемуся в переменной p (т.е. значение переменной а), становится равным 0 Структурный тип данных Для определения структурного типа используется ключевое слово struct: struct имя_структурного_типа { описание поля1; ... описание поляn; } При определении структурной переменной язык C++ резервирует для нее место в памяти. Если же был описан только структурный тип, а ни одной переменной данного типа определено не было, то место в памяти не выделяется. Переменную структурного типа можно инициализировать одновременно с объявлением. Инициализация переменной структурного типа производится, если после имени типа следуют знак "=" и список значений полей структурного типа в фигурных скобках разделенные запятой. Доступ к значениям полей структурного типа осуществляется с помощью операции точка. 28. Массивы в языке C++. Связь массивов и указателей В Си существует связь между указателями и массивами, и связь эта настолько тесная, что эти средства лучше рассматривать вместе. Любой доступ к элементу массива, осуществляемый операцией индексирования, может быть выполнен с помощью указателя. Объявление int a[10] определяет массив a размера 10, т. е. блок из 10 последовательных объектов с именами a[0], a[1],..., a[9]. Между индексированием и арифметикой с указателями существует очень тесная связь. По определению значение переменной или выражения типа массив есть адрес нулевого элемента массива. После присваивания pa = &a[0]; ра и a имеют одно и то же значение. Поскольку имя массива является синонимом расположения его начального элемента, присваивание pa=&a[0] можно также записать в следующем виде: pa = a; Кроме того, a[i] можно записать как *(a+i). Компилятор автоматически приводит запись первого вида ко второму. Многомерные массивы Многомерные массивы в C++ рассматриваются как массивы, элементами которых являются массивы. Определение многомерного массива должно содержать информацию о типе, размерности и количестве элементов каждой размерности. Многомерный массив подобно одномерному массиву может быть проинициализирован с помощью списка инициализаторов. int MyArray[3][3][3] = { {{0, 1}}, {{100}, {200, 210}, {300}}, {{1000}, {2000, 2100}, {3000, 3100, 3200}} }; MyArray[0][0][0] == 0MyArray[0][0][1] == 1MyArray[1][0][0] == 100MyArray[1][1][0] == 200MyArray[1][1][1] == 210MyArray[1][2][0] == 300MyArray[2][0][0] == 1000MyArray[2][1][0] == 2000MyArray[2][1][1] == 2100MyArray[2][2][0] == 3000MyArray[2][2][1] == 3100MyArray[2][2][2] == 3200 Следует помнить, что в C++ нет принципиальной разницы между массивом массивов произвольной размерности и обычным одномерным массивом. Потому и простор для творчества в деле инициализации многомерных массивов ограничивается левым индексом. Строки и массивы символов Символ – элементарная единица, некоторый набор которых несет определенный смысл. В языке программирования С++ предусмотрено использование символьных констант. Символьная константа – это целочисленное значение (типа int) представленное в виде символа, заключённого в одинарные кавычки, например 'a'. В таблице ASCII представлены символы и их целочисленные значения. Строки в С++ представляются как массивы элементов типа char, заканчивающиеся нуль-терминатором \0 называются С строками или строками в стиле С. \0 — символ нуль-терминатора. Символьные строки состоят из набора символьных констант заключённых в двойные кавычки. При объявлении строкового массива необходимо учитывать наличие в конце строки нуль-терминатора, и отводить дополнительный байт под него. При объявлении строки не обязательно указывать её размер, но при этом обязательно нужно её инициализировать начальным значением. Тогда размер строки определится автоматически и в конец строки добавится нуль-терминатор. Файлы и потоки Для осуществления операций с файлами предусмотрено три класса: ifstream, ofstream и fstream. Эти классы являются производными, соответственно, от классов istream, ostream и iostream. Поскольку эти последние классы, в свою очередь, являются производными от класса ios, классы файловых потоков наследуют все функциональные возможности своих родителей (перегруженные операции << и >> для встроенных типов, функции и флаги форматирования, манипуляторы и пр.). Для реализации файлового ввода-вывода нужно включить в программу заголовочный файл fstream.h. Чтобы открыть файл для ввода или вывода, можно использовать вторую форму нужного конструктора fstream fs("FileName.dat"); Завершив операции ввода-вывода, необходимо закрыть файл, вызвав функцию-член close() с прототипом void close(): ofs.close(); Закрытие файла происходит автоматически при выходе потокового объекта из области существования, когда вызывается деструктор потока.
|
||
|
Последнее изменение этой страницы: 2017-02-05; просмотров: 759; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.198 (0.006 с.) |