Мавзу: Структуралар ва динамик массивлардан фойдаланиб дастурлаш



Download 113,04 Kb.
bet4/5
Sana11.07.2022
Hajmi113,04 Kb.
#775546
1   2   3   4   5
Bog'liq
3-labaraorya Xusinov Shaxroyor 941-19

Структура хоссалари

Структуралар ва функциялар. Структуралар функциялар аргументлари сифатида ёки функция қайтарувчи қиймат келиши мумкин. Бундан ташқари иккала холда хам структурага кўрсаткичлардан фойдаланиш мумкиндир.


Мисол учун комплекс сон модулини хисоблаш дастурини келтирамиз:
Double modul(complex a)
{return sqrt(a.real*a.real+a.imag*a.imag}

Икки комплекс сон йиғиндисини хисоблаш функцияси:


complex add(complex a, complex b)


{ complex c;
c.real=a.real+b.real;
c.imag=a.imag+b.imag;
return c;
}
Структуралар учун хотирадан жой ажратиш. Структура учун ажратилган жой хажмини қуйидаги амаллар ёрдамида аниқлаш мумкин:
Sizeof (структурали_тип_номи);
Sizeof (структура_номи);
Sizeof структура_номи.
Охирги холда структура номи ифода деб каралади. Ифоданинг типи аниқланиб, хажми хисобланади.

Мисол учун:


Sizeof (struct goods)
Sizeof (tea)
Sizeof coat

Мураккаб типлар яъни массивлар ва структурали типлар учун хотирага талаб уларнинг таърифига боғлиқдир. Масалан double array[10] таъриф хотирадан 10*sizeof байт жой ажратилишига олиб келади.


Struct mixture
{
int ii;
long ll;
char cc[8];
};
Бу таъриф хар бир Struct mixture типидаги объект хотирада sizeof(int)+sizeof(long)+8*sizeof(char) байт жой эгаллашини кўрсатади. Объъект аниқ хажмини қуйидаги амал хисоблайди:
Sizeof(struct mixture)


Хотирани текислаш. Структурали тип киритилиши бу тип учун хотирадан жой ажратилишига олиб келмайди. Хар бир конкрет структура (объект) таърифланганда, шу объект учун элементлар типларига қараб хотирадан жой ажратилади. Хотирадан жой зич ажратилганда структура учун ажратилган жой хажми хар бир элемент учун зарур бўлган хотира хажмлари йигиндисига тенг бўлади. Шу билан бирга хотирадан жой зич ажратилмаслиги хам мумкин яъни элементлар орасида бўш жойлар хам колиши мумкин. Бу бўш жой кейинги элементни хотира кисмларининг кабул қилинган чегаралари бўйича текислаш учун колдирилади. Мисол учун бутун типдаги элементлар жуфт адреслардан бошланса, бу элементларга мурожаат тезроқ амалга оширилади.
#include
using namespace std;
struct Foo
{
char c;
int i;
char s;
};
int main ()
{
cout<<"Foo hajmi="<return 0;
}
Натижа:
Foo hajmi=12

Конкрет структураларни жойлашувига баъзи компиляторларда #pragma препроцессор директиваси ёрдамида таъсир ўтказиш мумкин. Бу директива қуйидаги шаклда:


Pragma pack(n)
Бу ерда n қиймати 1,2 ёки 4 га тенг бўлиши мумкин.
Pack(1) – элементларни байт чегаралари бўйича текислаш;
Pack(2) – элементларни сўзлар чегаралари бўйича текислаш;
Pack(4) – элементларни иккиланган сўзлар чегаралари бўйича
Масалан
#include
#pragma pack(1)

using namespace std;


struct Foo


{
char c;
int i;
char s;
};
int main ()
{
cout<<"Foo hajmi="<return 0;
}
Натижа:
Foo hajmi=6



Download 113,04 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5




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