O’zbekistan respublikasi aloqa axborot texnologiyalari va
Download 101.29 Kb.
|
Fayllar.Fayllar bilan ishlash funksialari
- Bu sahifa navigatsiya:
- Natija: 120 Ko’rsatkich va ulardan foydalanish
Bilvosita rekursiya: Agar funktsiya boshqa funktsiyani chaqirsa va bu funktsiya chaqiruvchi funktsiyani chaqirsa, bu bilvosita rekursiya deb ataladi. Masalan: A funktsiyasi B funktsiyasini va B funktsiyasi A funktsiyasini chaqiradi.
C ++ da bilvosita rekursiya misoli #include using namespace std; int fa(int); int fb(int); int fa(int n){ if(n<=1) return 1; else return n*fb(n-1); } int fb(int n){ if(n<=1) return 1; else return n*fa(n-1); } int main(){ int num=5; cout< } Natija: 120 Ko’rsatkich va ulardan foydalanish C ++ da ko'rsatkichlar boshqa o'zgaruvchilarning xotira manzillarini saqlaydigan o'zgaruvchilardir. Manzil C ++ da Agar bizda o'zgaruvchimiz bo'lsa var bizning dasturimizda, & varbizga manzilini xotirada beradi. Masalan, 1-misol: O'zgaruvchan manzillarni C ++ da chop etish #include using namespace std; int main() { // declare variables int var1 = 3; int var2 = 24; int var3 = 17; // print address of var1 cout << "Address of var1: "<< &var1 << endl; // print address of var2 cout << "Address of var2: " << &var2 << endl; // print address of var3 cout << "Address of var3: " << &var3 << endl; } Chiqish Var1 manzili: 0x7fff5fbff8ac Var2 manzili: 0x7fff5fbff8a8 Var3 manzili: 0x7fff5fbff8a4 Bu erda 0xboshida manzil o'n oltinchi shaklda ko'rsatilgan. E'tibor bering, birinchi manzil ikkinchisidan 4 baytga, ikkinchi manzil esa uchinchi baytdan 4 baytga farq qiladi. Buning sababi shundaki, int64 bitli tizimda o'zgaruvchining hajmi 4 baytni tashkil qiladi. Eslatma: Dasturni ishga tushirishda siz bir xil natijalarga erisha olmaysiz. C ++ ko'rsatkichlari Yuqorida aytib o'tganimizdek, ko'rsatkichlar qiymatlarni emas, balki manzillarni saqlash uchun ishlatiladi. Ko'rsatkichlarni qanday e'lon qilishimiz mumkin. int *pointVar; Bu erda biz ko'rsatgichni e'lon qildik nuqtaVarning intturi. Ko'rsatkichlarni quyidagi tarzda e'lon qilishimiz mumkin. int* pointVar; // preferred syntax Ko'rsatkichlarni e'lon qilishning yana bir misolini ko'rib chiqaylik. int* pointVar, p; Bu erda biz ko'rsatgichni e'lon qildik nuqtaVar va oddiy o'zgaruvchi p. Eslatma:* operator DECLARE markerni ma'lumotlar turi so'ng ishlatiladi. Ko'rsatkichlarga manzillarni tayinlash Ko'rsatkichlarga qanday qilib manzillarni tayinlashimiz mumkin: int* pointVar, var; var = 5; // assign address of var to pointVar pointer pointVar = &var; Bu erda 5o'zgaruvchiga tayinlanganvar. Va, manzilivar ga tayinlangan nuqtaVarkod bilan ko'rsatgich pointVar = &var. Ko'rsatkichlar yordamida manzildan qiymat oling Ko'rsatkich bilan ko'rsatilgan qiymatni olish uchun biz *operatordan foydalanamiz . Masalan: int* pointVar, var; var = 5; // assign address of var to pointVar pointVar = &var; // access value pointed by pointVar cout << *pointVar << endl; // Output: 5 Yuqoridagi kodda var manzili berilgan nuqtaVar. Biz *pointVarushbu manzilda saqlangan qiymatni olish uchun foydalanganmiz . Qachon ko'rsatgichlar *bilan ishlatilsa, uni ajratish operatori deyiladi . U ko'rsatgichda ishlaydi va ko'rsatgichda saqlangan manzil ko'rsatgan qiymatni beradi. Ya'ni *pointVar = var,. Eslatma: C ++ da, nuqtaVar va * nuqtaVarbutunlay boshqacha. Biz shunga o'xshash narsani qila olmaymiz*pointVar = &var; 2-misol: C ++ ko'rsatkichlarining ishlashi #include using namespace std; int main() { int var = 5; // declare pointer variable int* pointVar; // store address of var pointVar = &var; // print value of var cout << "var = " << var << endl; // print address of var cout << "Address of var (&var) = " << &var << endl << endl; // print pointer pointVar cout << "pointVar = " << pointVar << endl; // print the content of the address pointVar points to cout << "Content of the address pointed to by pointVar (*pointVar) = " << *pointVar << endl; return 0; } Chiqish var = 5 Var (& var) = 0x61ff08 manzili nuqtaVar = 0x61ff08 PointVar (* pointVar) = 5 tomonidan ko'rsatilgan manzilning tarkibi C ++ ko'rsatkichlarining ishlashi C ++ ko'rsatkichlari bilan ishlash Ko'rsatkichlar tomonidan ko'rsatilgan qiymatni o'zgartirish Agar nuqtaVar manziliga ishora qiladi var, ning qiymatini o'zgartirishimiz mumkin var yordamida * nuqtaVar. Masalan, int var = 5; int* pointVar; // assign address of var pointVar = &var; // change value at address pointVar *pointVar = 1; cout << var << endl; // Output: 1 Bu yerda, nuqtaVarva &varqiymati bir xil manzilga egavar qachon o'zgartiriladi * nuqtaVar o'zgartirildi. 3-misol: Ko'rsatkichlar tomonidan ko'rsatilgan qiymatni o'zgartirish #include using namespace std; int main() { int var = 5; int* pointVar; // store address of var pointVar = &var; // print var cout << "var = " << var << endl; // print *pointVar cout << "*pointVar = " << *pointVar << endl << endl; cout << "Changing value of var to 7:" << endl; // change value of var to 7 var = 7; // print var cout << "var = " << var << endl; // print *pointVar cout << "*pointVar = " << *pointVar << endl << endl; cout << "Changing value of *pointVar to 16:" << endl; // change value of var to 16 *pointVar = 16; // print var cout << "var = " << var << endl; // print *pointVar cout << "*pointVar = " << *pointVar << endl; return 0; } Chiqish var = 5 * pointVar = 5 Var qiymatini 7 ga o'zgartirish: var = 7 * pointVar = 7 * PointVar qiymatini 16 ga o'zgartirish: var = 16 * pointVar = 16 Ko'rsatkichlar bilan ishlashda keng tarqalgan xatolar Aytaylik, biz ko'rsatgichni xohlaymiz varPoint manziliga ishora qilish var. Keyin, int var, *varPoint; // Wrong! // varPoint is an address but var is not varPoint = var; // Wrong! // &var is an address // *varPoint is the value stored in &var *varPoint = &var; // Correct! // varPoint is an address and so is &var varPoint = &var; // Correct! // both *varPoint and var are values *varPoint = var; Download 101.29 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling