Конспект-справочник 'Моделирование на C++'



Download 1,26 Mb.
Pdf ko'rish
bet17/62
Sana20.03.2022
Hajmi1,26 Mb.
#504043
1   ...   13   14   15   16   17   18   19   20   ...   62
Производные типы 
Выше были рассмотрены фундаментальные (встроенные) типы данных а 
также составные типы. Язык предоставляет пользователю производные типы 
данных, такие как указатели, ссылки, и константы. 
 
 
27 


Указатели (pointers) 
Объект является типизированной областью памяти. Функции при этом 
объектами не являются несмотря на то, что они также как и объекты могут 
занимать память. В C++ фундаментальной единицей хранения является байт, 
состоящий из последовательности бит, числокоторых определяется 
реализацией. Да, их в байте может быть не восемь, хотя это большая редкость. 
Каждый байт имеет уникальный адрес. Указатель хранит адрес байта с 
которого начинается типизированная память. Указатель однозначно связан с 
типом, который хранится по этому адресу. Указатели объявляются путем 
добавления символа '*' к идентификаатору. 
double *x;
// неинициализированный указатель на double 
double* y;
// то же самое. и не важно, где стоит '*' но минимум один
// 
пробел нужен между идентификатором и типом; 
A *pa;
// укаазатель на объект 
A* pa, *pb
; // два указателя на объекты одного типа 
Физически указатель представляет собой адрес памяти. Для 32-битных 
архитектур процессоров размер адреса как правило составляет 32 бита. 
Проверьте в своей среде разработки сами: 
cout << sizeof(A*)<
; // размер в байтах! 
Инициализация указателей 
A a;
// определение объекта с выделением памяти 
A*pa = {&a}; // '&' - 
оператор взятия адреса объекта 
A *pb=new A; // 
создание нового объекта в динамической памяти 
A *pc{nullptr
}; // инициализация указателем-литераом 
Чтение значения по указателю 
double x{3.14};
// определение и инициализация 'x' 
double *px{&x}; // '*' - 
указывает на то, что 'px' это указатель;
// '&' - 
оператор взятия адреса 
cout << *px << endl;
// вне определения оператор '*', разыменование 
// 
указателя, означает объект, на который укаазатель
// 
ссылается. Результат: 3.14 
Запись в память по указателю 
double x, *px{&x};
// объявление 'x' и там же объявление указателя на него 
*px = 3.14;
// "разыменование" указателя и запись по адресу на
// 
который он указывает 
cout << x << endl; // 3.14 
Арифметика указателей для работы с указателями возможно 
использование операторов сложения, вычитания и сравнения. 
if (pa != pb
) // копирование объектов только если адреса разные 
*pa=pb; 
 
while(*pa++ = *pb++); // 
копирование массива 'pb' в массив 'pa' до первого 
// 
нулевого элемента 
28 



Download 1,26 Mb.

Do'stlaringiz bilan baham:
1   ...   13   14   15   16   17   18   19   20   ...   62




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish