Dinamik massivni e'lon qilish va ishga tushirish Massiv elementlariga kirish


Ko'rsatkichlar bilan ishlashda * va & operatsiyalari



Download 476,35 Kb.
bet5/12
Sana21.07.2022
Hajmi476,35 Kb.
#835046
1   2   3   4   5   6   7   8   9   ...   12
Bog'liq
Kurs ishi 2 260622081439

Ko'rsatkichlar bilan ishlashda * va & operatsiyalari

Ko'rsatkichlar bilan ishlashda asosan & va * operatorlari qo'llaniladi. & operatori o'z operandining manzilini qaytaradi.


Misol uchun, agar a o'zgaruvchisi quyidagicha e'lon qilingan bo'lsa:


float a;

operator
_a=&a;


a o‘zgaruvchining manzilini adr_a o‘zgaruvchisiga yozadi, adr_a o‘zgaruvchisi float tipiga ko‘rsatgich bo‘lishi kerak. U quyidagicha tavsiflanishi kerak:


*adr_a;

* operatsiyasi & operatsiyasining teskarisini bajaradi. U berilgan manzilda saqlangan o'zgaruvchining qiymatini qaytaradi.


Masalan, operator
=*adr_a;

a o'zgaruvchisiga adr_a manzilida saqlangan haqiqiy qiymatni yozadi.




ko'rsatkichni belgilash operatsiyasi.

Bir ko'rsatkichning qiymati boshqasiga tayinlanishi mumkin. Agar ko'rsatkichlar bir xil turdagi bo'lsa, u holda odatiy belgilash operatsiyasi yordamida birini boshqasiga tayinlash mumkin.


Quyidagi misolni ko'rib chiqing


#include
#include main()
{PI=3.14159,*p1,*p2;=p2=Π
printf(" Muallif manzil p1=%p saqlanadi *p1=%g\n",p1,*p1);(" By manzil p2=%p saqlanadi *p2=%g\n",p2,*p2);

Bu dastur quyidagilarni belgilaydi: PI=3,14159 haqiqiy o'zgaruvchi va p1 va p2 float turiga ikkita ko'rsatgich. Keyin PI o'zgaruvchisining manzili p1 va p2 ko'rsatkichlariga yoziladi. Printf iboralari p1 va p2 manzillarini va shu manzillarda saqlangan qiymatlarni chop etadi. Manzilni chiqarish uchun %p tipi spetsifikatoridan foydalaniladi. Ushbu dastur natijasida p1 va p2 o'zgaruvchilari PI=3.14159 haqiqiy o'zgaruvchisi saqlanadigan bir xil manzilning qiymatini saqlaydi.




*p1=3,14159 p1=0012FF7C da saqlanadi
*p2=3,14159 p2=0012FF7C da saqlanadi

Agar ko'rsatkichlar har xil turlarga tegishli bo'lsa, u holda bir ko'rsatgichning qiymatini boshqasiga belgilashda siz turdagi konversiyadan foydalanishingiz kerak. Konvertatsiya qilmasdan, istalgan ko'rsatgichga void * ko'rsatkichini belgilashingiz mumkin. Har xil turdagi ko'rsatkichlar bilan ishlash misolini ko'rib chiqing.




#include
#include main()
{ PI =3,14159,* p 1;
ikki marta *p2;
//p1 o'zgaruvchisiga PI=&PI manzilini yozamiz;
// ishora qiluvchi qiymatni ikki marta belgilash uchun ko'rsatgich
// float turi .=( double *) p 1;
printf("p1=%p manzili *p1=%g\n",p1,*p1);("p2=%p manzilda *p2=%e\n",p2,*p2 saqlanadi);
}
*p1=3,14159 p1=0012FF7C da saqlanadi
*p2=2.642140e-308 p2=0012FF7C da saqlanadi

p1 va p2 ko'rsatkichlari bir xil manzilni saqlaydi, ammo ular ko'rsatadigan qiymatlar boshqacha. Buning sababi, *float ko'rsatkichi 4 baytga, * juft ko'rsatkich esa 8 baytga murojaat qiladi. Topshiriqdan keyin p2=(double *)p1; *p2 ga kirishda quyidagilar sodir bo'ladi: p1 da saqlangan o'zgaruvchiga xotiradan yana 4 bayt qo'shiladi. Natijada *p2 qiymati *p1 qiymatiga mos kelmaydi.




#include
#includemain()
{PI=3.14159,*p1;*p2;=Π=(float *)p1;
printf(" Muallif manzil p1=%p saqlanadi *p1=%g\n",p1,*p1);(" By manzil p2=%p saqlanadi *p2=%e\n",p2,*p2);
}

Topshiriqdan keyin p2=(double *)p1; *p2 ga kirishda quyidagilar sodir bo'ladi: p1 da saqlangan o'zgaruvchidan faqat 4 bayt ajratiladi. Natijada, bu holda *p2 qiymati *p1 qiymatiga mos kelmaydi.


Bu quyidagi xulosaga olib keladi: har xil turdagi ko'rsatgichlarni o'zgartirganda, tipni quyish faqat tayinlashning sintaktik muammosini hal qiladi. Shuni esda tutish kerakki, bir xil manzilga ishora qiluvchi har xil turdagi ko'rsatkichlar ustidagi * operatsiyasi turli qiymatlarni qaytaradi.
Agar keyingi bayonot bo'lsa
*p;

keyin p o'zgaruvchisi manzilni saqlaydi va *p konstruktsiyasidan foydalanib siz p manzilida saqlangan qiymatni olishingiz mumkin.


Operatordan foydalanilganda
p;

keyin &p konstruktsiyasi manzilni hisoblash uchun ishlatiladi va p o'zgaruvchisi haqiqiy qiymatni o'z ichiga oladi.



Download 476,35 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   ...   12




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