Darsliklar C Funksiya parametrlari

C C Funksiya parametrlari

Funksiya parametrlari — funksiyaga tashqaridan ma’lumot uzatish vositasi. Parametrsiz funksiya doim bir xil ish qiladi; parametr bilan esa u har xil kirish uchun har xil natija beradi. C’da parametr uzatishning ikki asosiy yo’li bor va ular orasidagi farq — ko’rsatkichlar bilan bevosita bog’liq.

Parametrfunksiya e’lonida ko’rsatilgan, chaqiruvda beriladigan qiymatni qabul qiladigan o’zgaruvchi. Chaqiruvda beriladigan haqiqiy qiymat argument deb ataladi.

Qiymat bo’yicha uzatish

C’da parametr standart holatda nusxa sifatida uzatiladi. Funksiya ichida qiymat o’zgarsa, asl o’zgaruvchi o’zgarmaydi:

#include <stdio.h>

void oshir(int son) {
    son = son + 10;   /* faqat nusxa o'zgaradi */
}

int main(void) {
    int a = 5;
    oshir(a);
    printf("%d\n", a);   /* a o'zgarmaydi */
    return 0;
}
5

a o’zgarmadi, chunki funksiyaga uning nusxasi uzatildi. Bu xavfsiz, ammo asl qiymatni o’zgartira olmaydi.

Manzil bo’yicha uzatish

Agar funksiya asl o’zgaruvchini o’zgartirishi kerak bo’lsa, uning manzilini (ko’rsatkich orqali) uzatamiz:

#include <stdio.h>

void oshir(int *son) {
    *son = *son + 10;   /* asl o'zgaruvchini o'zgartiradi */
}

int main(void) {
    int a = 5;
    oshir(&a);          /* manzilni uzatamiz */
    printf("%d\n", a);  /* endi a o'zgardi */
    return 0;
}
15

Bu yerda int *son — ko’rsatkich parametr, &a — manzil, *son — dereferensiya. Endi funksiya a ning o’zini o’zgartira oldi. Bu — C’da funksiyadan natija “qaytarish”ning muhim usuli.

Ikki usulni solishtirish

Ikki usulni jadvalda solishtiramiz:

Usul Yozilishi Asl qiymatga ta’sir Qachon
Qiymat bo’yicha int son ta’sir qilmaydi kichik, himoyalangan ma’lumot
Manzil bo’yicha int *son o’zgartiradi asl o’zgarishi kerak / katta ma’lumot

Massivni uzatish

C’da massiv funksiyaga doim manzil bo’yicha uzatiladi — shuning uchun funksiya uni o’zgartira oladi:

#include <stdio.h>

void ozgartir(int arr[], int hajm) {
    arr[0] = 99;   /* massiv ichi o'zgaradi */
}

int main(void) {
    int sonlar[3] = {1, 2, 3};
    ozgartir(sonlar, 3);
    printf("%d\n", sonlar[0]);
    return 0;
}
99

Massiv nomi aslida uning birinchi elementiga ko’rsatkichdir — shuning uchun funksiya massiv ichini o’zgartira oldi. Massiv hajmi alohida parametr sifatida uzatiladi.

Xulosa

Bu bo’limda qiymat bo’yicha va manzil bo’yicha (*, &) parametr uzatishni, ularning farqini va massivni uzatishni ko’rib chiqdik. Manzil bo’yicha uzatish — C’ning kuchli imkoniyati. Keyingi darsda strukturalarga o’tamiz.