Namangan davlat universiteti amaliy matematika kafedrasi
malloc() funksiyasidan farqli ravishda calloc()
Download 0.52 Mb.
|
Amaliy mashg amaliy matematika 1 kurs
- Bu sahifa navigatsiya:
- Free()
malloc() funksiyasidan farqli ravishda calloc() funksiyasi massiv uchun joy ajratishdan tashqari massiv elementlarini 0 qiymati bilan initsializatsiya qiladi. Bu funksiya sintaksisi
void * calloc (size_t num, size_t size) ; ko’rinishda bo‘lib, num parametri ajratilgan sohada nechta element borligini, size har bir element o‘lchamini bildiradi. Free() xotirani bo‘shatish funksiyasi o‘chiriladigan xotira bo‘lagiga ko‘rsatkich bo‘lgan yagona parametrga ega bo‘ladi: void free (void * blok) free() funksiyasi parametrining void turida bo‘lishi ixtiyoriy turdagi xotira bo‘lagini o‘chirish imkonini beradi. Quyidagi programmada 10 ta butun sondan iborat dinamik massiv yaratish, unga qiymat berish va o‘chirish amallari bajarilgan. #include #include int main() { int * pVector; if ((pVector=(int*)malloc(10*sizeof(int)))==NULL) { cout<<”Xotira yetarli emas!!!”; return 1; } // ajratilgan xotira sohasini to‘ldirish for(int i=0; i<10; i++) * (pVector+i)=i; // vektor elementlarini chop etish for(int i=0; i<10; i++) cout<<*(pVector+i)<<”end1”; // ajratilgan xotira bo‘lagini qaytarish (o‘chirish) free (pVector) ; return 0; } Keyingi programmada nxn o‘lchamli haqiqiy sonlar massivining bosh diagonalidan yuqorida joylashgan elementlar yig‘indisini hisoblash masalasi yechilgan. #include #include int main() { int n ; float * pMatr, s=0; cout<<”A(n,n): n=”; cin>>n; if((pMatr=(float*)malloc(n*n*sizeof(float)))==NULL) { cout<< Xotira yetarli emas!!!”; return 1; } for(int i=0; i for(int j=0; j for(int i=0; i for(int j=i+1; j cout<<”Matritsa bosh diaonalidan yuqoridagi”; cout<<”elementlar yig’indisi S=”< return 0; } new operatori yordamida, massivga xotira ajratishda. Obyekt turidan keyin kvadrat qavs ichida obyektlar soni ko‘rsatiladi. Masalan, butun turdagi 10 ta sondan iborat massivga joy ajratish uchun pVector=new int[10]; ifodasi yozilishi kerak. Bunga qarama-qarshi ravishda, bu usulda ajratilgan xotirani bo‘shatish uchun delete []pVector; ko‘rsatmasini berish kerak bo‘ladi. Ikki o‘lchamli dinamik massivni tashkil qilish uchun int **a; ko’rinishidagi «ko‘rsatkichga ko‘rsatkich» ishlatiladi. Boshda massiv satrlari soniga qarab ko‘rsatkichlar massiviga dinamik xotiradan joy ajratish kerak: a=new int *[m] // bu yerda m massiv satrlari soni Keyin, har bir satr uchun takrorlash operatori yordamida xotira ajratish va ularning boshlang‘ich adreslarini a massiv elementlariga joylashtirish zarur bo‘ladi: for(int i=0; i Shuni qayd etish kerakki, dinamik massivning har bir satri xotiraning turli joylarida joylashishi mumkin. Ikki o‘lchamli massivni o‘chirishda oldin massivning har bir elementi (satri), so‘ngra massivning o‘zi yo‘qotiladi: for (i=0;i delete [] a [i] ; delete [] a; Matritsani vektorga ko‘paytirish masalasi uchun dinamik massivlardan foydalanishga misol: void main() { int n,m; int I,j; float s; cout<<”\n n=”;cin>>n; // matritsa satrlari soni cout<<”\n m=”;cin>>m; // matritsa ustunlari soni float *b=new float[m]; float *c=new float[n]; // ko‘rsatkichlar massiviga xotira ajratish float **a=new float *[n]; for(int i=0; i a[i]=new float[m]; //dinamik xotira ajratish for(j=0; j for(i=0; i for(j=0;j for(i=0;i { for(j=0,s=0; j c[i]=s; } for(i=0; i delete[]b; delete[]c; for(i=0; i delete[]a; return; } Download 0.52 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling