Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VC++(теория).doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
375.3 Кб
Скачать

Ссылочный тип данных

  • Ссылочная переменная не содержит своих данных, но ссылается на данные, хранящиеся в другой переменной. Ссылки упрощают восприятие программы. Значения ссылки задается при объявлении (&) и не меняется в процессе выполнения, меняются только данные, находящиеся по данной ссылке (\22REFVAR)

//

// 22REFVAR.CPP Использование ссылочного типа данных

//

#include <iostream>

using namespace std;

void testfunc(int& ri); // Объявление прототипа функции

int main()

{

int i = 5;

//int& ri; // Нельзя просто объявлять ссылку

int& ri = i; // Объявление ссылки и ее инициализация

cout << "i=" << i << " ri=" << ri << endl;

ri = 4; // Значение i изменилось вместе с ri

cout << "i=" << i << " ri=" << ri << endl;

int *pi = &i; // Тоже самое через использование указателей

*pi = 3; // выглядит достаточно громоздко и больше

// вероятность допуска ошибок

cout << "i=" << i << " ri=" << ri << endl;

testfunc(i); // Вызов функции с передачей параметра по ссылке

//testfunc(1); // Такой вызов функции неверен

cout << "i=" << i << " ri=" << ri << endl;

return(0);

}

void testfunc(int& rint)

{

rint--; // Изменяется также и значение передаваемой переменной

cout << "rint = " << rint << endl;

}

Задание: Объявить еще одну переменную-ссылку на I и, изменив ее значение, пронаблюдать, как изменилось значение переменной I Работа с файлами

  • Библиотека <fstream.h> предоставляет объекты потоков для работы с файлами:ifstream (для чтения файла), ofstream (для записи в файл), fstream (для чтения и записи в файл одновременно).

  • Эти объекты обладают свойствами и методами, позволяющими вам открывать файлы, считывать и заносить в них информацию. Работа с объектами подобна работе с объектами потоков cout, cin

  • Пример (\23FILES) иллюстрирует основные методы работы с файловыми потоками.

#include <fstream.h> // Заголовок библиотеки C++ для работы с файловыми потоками

#include <iomanip>

// Заголовок библиотеки C++ для форматирования

#define MIN_DISCOUNT 0.97 // Константы для величины скидок

#define MAX_DISCOUNT 0.95

int main()

{

float forder_price, fbill_price; // Объявление переменных

ifstream fin("customer.dat"); // Открытие файла для чтения "customer.dat"

ofstream fout("billing.dat"); // Открытие файла для записи "billing.dat"

fin >> forder_price; // Считать из потока входную цену

while (!fin.eof()) { // Цикл пока не конец файла

fout << setiosflags(ios::fixed); // Установить формат вывода фиксированный

fout << "Your order of $" << setprecision(2) \

<< setw(8) << forder_price; // Вывести в файл входную цену

// в формате 8.2

if (forder_price < 10000) // Расчет выходной цены

fbill_price = forder_price * MIN_DISCOUNT;

else

fbill_price = forder_price * MAX_DISCOUNT;

fout << " is discounted to $" << setprecision(2) \

<< setw(8) << fbill_price << "\n"; // Вывести выходную цену в файл

fin >> forder_price; // Считать следующую входную цену

}

fin.close(); // Закрыть потоки, связанные с файлами

fout.close();

return(0);

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]