![MQL5 - MetaTrader 5 müşteri terminalinde yerleşik ticaret stratejileri dili](https://c.mql5.com/i/registerlandings/logo-2.png)
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Kafam karıştı, bana kimin bildiğini söyle.
Bir yapı yarattı, onu verilerle doldurdu, bir dizi yapı yarattı.
Şimdi bir diziyi işleve ancak yapının yalnızca bir öğesi için nasıl aktarabilirim????????????????
Geliştiricilere bir öneri , mümkünse yapılar üzerinde standart işlemler yapmak güzel olur
böyle değil:
ama şöyle:
yapıların kopyalanması küçük bir mesele bırakılmıştır.Kafam karıştı, bana kimin bildiğini söyle.
Bir yapı yarattı, onu verilerle doldurdu, bir dizi yapı yarattı.
Şimdi bir diziyi işleve ancak yapının yalnızca bir öğesi için nasıl aktarabilirim????????????????
Mümkün değil. Evet ve gerek yok.
Çünkü - toplama işlevinde tam olarak o öğeyi kim engeller ve özetler?
İşte "koşer" olarak düzeltilen kod:
OnStr() işlevinin içindeki for döngüsünde 10 değil, yalnızca ArraySize() gibi bir şey kullanılmalıdır. Ve "sum+=x[i].y"deki y yerine, yapıda tanımlanan gerçek veri alanı toplanır (örneğin, a veya b).
Yapılar üzerinde standart işlemler yapmanın güzel olup olmayacağı geliştiricilere bir öneri
böyle değil:
ama şöyle:
yapıların kopyalanması küçük bir mesele bırakılmıştır.C++ buna sahiptir. Buna "operatör aşırı yüklemesi" denir. Nasıl çalışması gerektiği programcı tarafından ilgili fonksiyon kullanılarak belirlenir.
Ancak Renat bu özelliği'e hayır dedi. Şans yok, değil mi?
Mümkün değil. Evet ve gerek yok.
Çünkü - toplama işlevinde tam olarak o öğeyi kim engeller ve özetler?
İşte "koşer" olarak düzeltilen kod:
OnStr() işlevinin içindeki for döngüsünde 10 değil, yalnızca ArraySize() gibi bir şey kullanılmalıdır. Ve "sum+=x[i].y"deki y yerine, yapıda tanımlanan gerçek veri alanı toplanır (örneğin, a veya b).
Her zaman olduğu gibi, örnekler verdiğimde özü uçup gitti ama her şeye şaşırmıyorum, muhtemelen kemik dilim suçlu.
Ve işin özü, aritmetik ortalamanın bir fonksiyonunu yazmak ve daha sonra yapının her bir üyesi için aritmetik ortalamanın yapısını elde etmek için bir dizi yapıyı bu fonksiyona geçirmektir.
Bir örnek basitlik için sonuçlandı, ancak muhtemelen başarısız oldu. Ama yine de, açıklama için teşekkürler.
Görünüşe göre geliştiricileri "operatör aşırı yüklemesine" izin vermek için gerçekten çekiçlemeniz gerekiyor.
Pekala, sadece iki yapıyı toplamak, çarpmak, bölmek için bir sürü yöntem yazmam gerekti,
en iğrenç şey, diğer yapıların tüm bunları yeni bir şekilde yazmak zorunda kalacak olmasıdır.
PS , yöntemlerin yanı sıra, bunun karşılığında çalıştığımız takajazha yapısı olan yapıların türünü verir ve böylece iç içe çağrı geçiş yapmaz ???
sonuç önce geçici bir yapıda saklanmalı ve ardından sonraki işlemeye aktarılmalıdır. bunun neden yapıldığı belli değil.
PPS , tüm parametreler sabit olmasına rağmen, var olmayan bir değişkende değişiklik olma şansı yoktur.
PPPS ve çöp yapılar, var olmayan bir yapıya atıfta bulunabileceğiniz için referans olarak iletilir (görünüşe göre dinlenme zamanı).
Kafam karıştı, bana kimin bildiğini söyle.
Bir yapı yarattı, onu verilerle doldurdu, bir dizi yapı yarattı.
Şimdi bir diziyi işleve ancak yapının yalnızca bir öğesi için nasıl aktarabilirim????????????????
Mümkün değil. Evet ve gerek yok.
Çünkü - toplama işlevinde tam olarak o öğeyi kim engeller ve özetler?
İşte "koşer" olarak düzeltilen kod:
OnStr() işlevinin içindeki for döngüsünde 10 değil, yalnızca ArraySize() gibi bir şey kullanılmalıdır. Ve "sum+=x[i].y"deki y yerine, yapıda tanımlanan gerçek veri alanı toplanır (örneğin, a veya b).
İki seçenek var (anladığım kadarıyla):
1. Ek parametrelerle çalışacağımız kaydın dizinini belirterek diziyi dizinin kendisini iletin.
Bu durumda, boyut dizisinin taşmasını kontrol etmek gerekir ve fonksiyon bildirimi şöyle görünecektir...
2. Sırasıyla bir kayıt boyutunda ikincil bir diziyi geçiyoruz, işlevin sonucunun izlenmesi ve işlenmesi ile ilgili tüm çalışmalar, işlev çağrısı noktasında gerçekleştirilir.
İşlev bildirimi daha sonra şöyle görünürdü ...
Yanlış yorum "tür dönüşümü nedeniyle olası veri kaybı "? (Yapı: 305)
Sonucu açıkça int'ye çevirmelisiniz.
not
Çalışan bir örnek burada görülebilir - OrderSend ()
Ama anladığım kadarıyla prensipte bu uyarıya gözlerinizi kapatabilirsiniz...
Karşılığında çok parantez varsa - kafanız karışmaya başlar!?
Örneğin burada, "klsfd Adım 2" gibi bir dizeden bir sayı döndüren bir işlev verilmiştir:
Bundan farkı nedir?
İkinci seçenek derleme sorunlarına neden olurken, ilk seçenek oluşturmaz.