Statik diziyi döndürmek için işaretçileri kullanın
Normal bir dizi kullandığımızda, bir çeşit anormal sonuç alma şansımız var. Bunu önlemek için C++ kodumuzda statik bir dizi kullanıyoruz. Kullandığımız örneği anlayalım. Bu fonksiyonda burada bahsedildiği gibi dönüş tipi için 5 değer içeren bir dizi tanımlıyoruz.
int *() işlevi
Değer bir tamsayı türü olacağından aşağıdaki örnekte “int” olarak adlandırılacaktır. Fonksiyonu bir işaretçi olarak tanıttığımız için, işlev işaretçi türünde olacaktır. Değerler girildikten sonra dizi ana programa geri döner.
Ana programda bir fonksiyon çağırdık. İşlevden döndürülen değeri kabul etmek için bir tamsayı değişkeni kullanacağız. Dizi döndürüldüğünde değerlerine kolayca ulaşabiliriz. Değerler manuel olarak yazdırılacaktır.
int* Işaretçi = İşlev ();
İşaretçinin amacı, dizinin ilk dizinindeki öğeyi bulmaktır. Diğer bir deyişle dizideki değerin adresini işaret eder. Ardından, bir işaretçi döndürecek bir işlev prototipi kullanıyoruz.
Linux söz konusu olduğunda, işlev aracılığıyla döndürülen dizin çıktısını görmek için Ubuntu terminaline erişmemiz gerekir. Bunun nedeni, çıktıya Linux terminali aracılığıyla erişilebilmesidir. Linux’ta, herhangi bir metin düzenleyicide yazılmış C++ kodunu çalıştırmak için bir derleyiciye ihtiyacımız var. Bu derleme G++ kullanılarak yapılır. Çıktıyı bir dosyada saklamak için “-o” kullanılır. Burada çıktı dosyasına ve kaynak kod dosyasına ihtiyacımız var. Derledikten sonra kodu çalıştıracağız:
$ g++-Ö dosya1 dosya1.c
$. /Duçya 1
Çıktıdan, işlevde başlatılan dizinin, ana işlevde manuel olarak ve işaretçiler aracılığıyla başlatılan statik bir dizi kullanılarak işlendiğini görebiliriz.
İşaretçileri kullanarak dinamik olarak ayrılmış diziyi döndürür
Diziler, dinamik ayırma kullanılarak döndürülebilir. Diziler, ‘new’ anahtar kelimesi kullanılarak dinamik olarak tahsis edilebilir. Biz onları silene kadar orada kalacaklar. statik dizilerin boyutu sabittir; Bu, başlatma sırasında boyutu sağlamanız gerektiği anlamına gelir. Dizi oluşturulduktan sonra, boyutu çalışma zamanında veya daha sonra artırmak zordur. Ancak dinamik dizi durumunda, genişleme sırasında herhangi bir zamanda içine değerler girildiğinde daha fazla öğe ekleyebiliriz. Bu nedenle, herhangi bir boyut tanımlamamıza veya tanımlamamıza gerek yoktur.
Burada kullandığımız örneğe dönüyoruz. Statik dizili işaretçiler kullandığımız önceki örneklerde olduğu gibi işaretçili dinamik bir dizi kullandık.
Diziler, işlev bildirildikten sonra dinamik olarak bildirilir:
“Yeni” terimi, sürekli olarak dinamik bir matris oluşturmak için kullanılır. İçine değerler girerek dizi üzerinde işlemler gerçekleştireceğiz. Bundan sonra dizi ana programa döndürülür:
Şimdi ana işlevi düşünün. Fonksiyon çağrısını yaptık. Dizi döndürüldüğünde, değeri kabul etmek için bir tamsayı işaretçi tipi değişken ekleriz.
int* Işaretçi = İşlev ();
Dizide saklanan değerler manuel olarak yazdırılır. Çıktı derleme ve yürütme ile elde edilir.
Yapıları kullanarak dönüş matrisi
Yapılar, diziler gibi kaplardır. Ancak, dizi her seferinde aynı veri türünden bir değer içerir. Ve yapılar söz konusu olduğunda, birden çok veri türü değeri içerirler. “Örnek” diye bir yapımız var. Burada dizi bildirimi, işlevler yerine yapıların içindedir. Dönüş tipi, yapının adıdır. Yapı değişkeni ana programa döndürülür. Yapı, reklam için “yapı” kelimesini kullanır.
Örnek oluştur
{
dahili dizi[100];
};
Yapıyı bildirdikten sonra, Yapı nesnesinin oluşturulduğu yerde bir fonksiyon kullandık. Bu nesne yapıya erişmek için kullanılacaktır. Bu fonksiyon struct nesnesini ana fonksiyona döndürür, böylece diziyi bu nesne üzerinden yazdırabiliriz. Değişken, değişkendeki değerleri alır. Bu değer, diziye maksimum değeri ekleyeceğimiz tamsayıdır. Bu örnekte olduğu gibi sayı olarak 6’yı seçtik. Böylece matrise 6’ya kadar sayılar girilmiş olacaktır.
Örnek işlevini oluşturun (int n)
Şimdi, ana programa giderek, diziye erişmek için şu şekilde bir nesne oluşturuyoruz:
Nesne başlatıldıktan sonra, diziye sayı eklemek istediğimiz değişkene bir değer eklenir. İşlev çağrısında, parametredeki değeri ileteceğiz:
Bir for döngüsü kullanarak ekrana sahip olacağız. Değerler, ana programın başlangıcında beyan edilen nesne aracılığıyla görüntülenir:
Çıktıda programda 6 sayı girdiğimiz için sonuçta 6 değerin görüntülendiğini gösteriyor.
Std kullanarak diziyi döndür
C++, bir işlevden dizi döndürmek için birçok yöntem kullanır. Bunlardan biri std::array aracılığıyladır. Bu bir yapı taşıdır. Bu özellik ayrıca size() ve empty() olmak üzere iki ek işlev sağlar. Tüm dizinin ana programa döndürüldüğünü belirten bir dizi adı döndürülür. Buraya “array” başlık dosyasını ekleyeceğiz. Kütüphaneye ek olarak, matrisin tüm fonksiyonlarını içerir.
Dizinin tamamını isme göre döndürebileceğimiz için, işlev bildiriminde dönüş türü olarak diziyi kullanacağız. Veriler matrise girilir. Bundan sonra matris ana programa geri dönecektir. Ana fonksiyona giderek, fonksiyon çağrıldığında dizi değişkeni diziyi kabul edecektir.
Yine, dizi değerlerini görüntülemek için for döngüsü kullanılacaktır. Aşağıda gösterilen görüntüden çıktıyı görüyoruz. 10 beden kullandığımız için 0 girilecektir. Böylece, görüntülenirler:
Vektör kabının üzerindeki diziyi döndürür
Bu ilke, dinamik olarak ayrılmış bir koleksiyondur. Bu durumda olduğu gibi, matrisin boyutunu belirtmeye gerek yoktur. Burada herhangi bir boyut parametresine ihtiyacımız yok. Bu örneği kullanarak, vektör fonksiyonlarını içeren kütüphaneye bir ‘vektör’ başlığı eklememiz gerekiyor.
Dönüş türünün aynı zamanda bir int vektörü olduğu ve parametrenin bağımsız değişken olarak bir vektör işaretçisi içerdiği işleve gitme. Burada “temp” adlı bir dizi sunulmaktadır:
vektör <int> Bir diziyi iki ile çarpma(Sabit miktar vektör<int>*Varış)
İşlev, tmp.push_back() işlevini kullanarak dizinin öğelerini çarpacaktır. Ardından tmp’yi döndürün. Autotype değişkeni, işlevden dizi değerlerini kabul edecektir. Bir dizi, içindeki öğeleri içerir.
Çıktı, çalışan vektör kapsayıcısını gösterir.
çözüm
Yukarıdaki makalede, bir işlevden dizi döndüren bir işlevi açıklamak için en sık kullanılan beş yöntemi açıklıyoruz.
Diğer gönderilerimize göz at
[wpcin-random-posts]
İlk Yorumu Siz Yapın