Bir Sıra Bir Funksiyaya Necə ötürülür

Mündəricat:

Bir Sıra Bir Funksiyaya Necə ötürülür
Bir Sıra Bir Funksiyaya Necə ötürülür

Video: Bir Sıra Bir Funksiyaya Necə ötürülür

Video: Bir Sıra Bir Funksiyaya Necə ötürülür
Video: Funksiyalar.qaydalrla,asandan çətinə,birdənə MƏN,birdənə SƏN 2024, Dekabr
Anonim

Diziler kompüter proqramlarında ən çox istifadə edilən strukturlaşdırılmış məlumatların saxlanılması formalarından biridir. Onların işlənməsi sinif metodları və funksiyalarında tətbiq olunan müxtəlif alqoritmlər tərəfindən edilə bilər. Buna görə, tez-tez bir funksiyanı bir sıra ötürmək tələb olunur. C və C ++ dilləri bu hərəkəti həyata keçirmək üsullarını seçməkdə böyük sərbəstlik təqdim edir.

Bir sıra bir funksiyaya necə ötürülür
Bir sıra bir funksiyaya necə ötürülür

Vacibdir

C və C ++ dillərinin tərtibçiləri

Təlimat

Addım 1

Fəaliyyətə sabit ölçülü bir sıra ötürün. Müvafiq tipli bir arqument ehtiva etmək üçün funksiyanın prototipini dəyişdirin. Məsələn, üç elementin ədədi ədədi dəyərlərini bir parametr olaraq qəbul edən bir funksiyanın parametr kimi göstərilməsi belə ola bilər:

boş ArrayFunction (int aNumbers [3]);

Belə bir funksiyaya bir sıra birbaşa arqument kimi ötürülməklə çağırılır:

boşluq Bəzi İşlev ()

{

int aNumbers = {1, 2, 3};

ArrayFunction (aNumbers);

}

Aktarılan məlumatlar yığına köçürülür. Dizinin çağırılan funksiyada dəyişdirilməsi mənbəyi dəyişdirmir.

Addım 2

Dəyişən uzunluqlu massivləri funksiyaya ötürün. Bunu etmək üçün sadəcə müvafiq arqumentin ölçüsünü göstərməyin:

etibarsız ArrayFunction (int aNumbers );

Çoxölçülü massivlər də oxşar şəkildə ötürülə bilər (yalnız ilk "ölçü" dəyişən ola bilər):

etibarsız ArrayFunction (int aNumbers [3] [2]);

Bu funksiyalar ilk addımda olduğu kimi eyni şəkildə çağırılır.

Bir funksiyada dəyişkən uzunluqlu massivləri düzgün şəkildə işləyə bilmək üçün elementlərinin sayını əlavə bir parametrdən açıq şəkildə keçirtməlisiniz və ya elementlərin öz dəyərlərinə məhdudiyyət qoyan konvensiyalardan istifadə etməlisiniz (müəyyən bir dəyər) massivin sonuna işarə olmalıdır).

Addım 3

Dizini göstərici ilə keçir. Funksiya arqumenti massivin elementlərinə uyğun bir növü olan bir dəyərə işarə olmalıdır. Misal üçün:

boş ArrayFunction (int * pNumbers);

Bir funksiyadakı məlumatlara giriş həm sıra elementləri ilə işləmək üçün qeyddə, həm də ünvan hesabından istifadə edilə bilər:

boş ArrayFunction (int * pNumbers)

{

pNumber [0] = 10; // element 0-a giriş

* (pNumber + 1) = 20; // maddə 1-ə giriş

}

Ehtiyatlı ol! Funksiya verilənlərin bir nüsxəsi deyil, ona bir göstərici ötürüldüyü üçün orijinal massiv dəyişdiriləcəkdir.

Bu metodun üstünlüyü sürət, hesablama mənbələrinin qənaəti və müəyyən bir rahatlıqdır. Beləliklə, hədəf funksiyasını massivin ixtiyari elementinə bir göstərici ötürərək zəng edə bilərsiniz:

boşluq Bəzi İşlev ()

{

int aNumbers = {1, 2, 3};

ArrayFunction (aNumbers); // bütün massiv

ArrayFunction (& aNumbers [1]); // ikinci elementdən başlayaraq

}

Bu metod, ümumiyyətlə, mövcud parametrlərin sayının əlavə bir parametrdə ötürülməsini və ya bir sıra sonlandırıcısını istifadə etməyi də əhatə edir.

Addım 4

Bir obyekt olan bir parametr olan bir funksiyaya məlumat verin və ya sıra funksiyasını həyata keçirən sinif obyektinə bir istinad. Bu cür siniflərə və ya sinif şablonlarına ümumiyyətlə populyar kitabxanalarda və çərçivələrdə rast gəlinir (Qt-də QVector, MFC-də CArray, STL-də std:: vector və s.).

Çox vaxt bu siniflər istinad məlumatları ilə gizli məlumat paylaşma strategiyasını həyata keçirir, yalnız məlumat dəyişdirildikdə dərin bir nüsxəni həyata keçirir (yazıya kopyalayın). Bu, sıra obyektlərinin funksiya və metodların arqumentləri ilə dəyərinə görə ötürülməsi halında belə hesablama mənbələrinin istehlakını minimuma endirməyə imkan verir:

boş ArrayFunction (QVector oArray)

{

int nItemCount = oArray.count ();

int nItem = oArray [0];

}

boşluq Bəzi İşlev ()

{

QVector oArray (10);

üçün (int i = 0; i

Tövsiyə: