Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 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; просмотров: 594; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.15.156.140 (0.009 с.) |