Şimdi Ara

C de ' pop fonksiyonu ' değer döndürmek zorundamı ?

Koronavirüs Özel
Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
22
Cevap
0
Favori
441
Tıklama
Tüm Forumlar >> Web Tasarım - Programlama >> Yazılım Geliştirme >> Delphi / C++ /Vb >> C de ' pop fonksiyonu ' değer döndürmek zorundamı ?
Sayfaya Git:
Sayfa:
Giriş
Mesaj
  • Yüzbaşı
    672 Mesaj

    hocam yeni bir konu açmak istemedim basit bir soru için şimdi ben stack yapısında daha düzenli stack yapısı yapmak için struct tipinde stack biligelrini tutan bir baş değişken yapmak istedim fakat baş değişkeni tuttuğu stack alanı sonradan değişmediği için tüm stack değişkenlerini boyutu aynı olmak zorunda oluyor bu yüzdende stack alanı yerine struct tipine işaretci koyarak malloc fonksiyonu ile heap alanını kullanmak istedim bunu yapmam doğrumu veya şöyle birşey olabilirmi stack alanından ayırdığımız boyutu bir değişkene atamak yerine direk sturc tipindeki değişkene ataya bilirmiyiz biraz saçma olacak ama şöyle bir kod yazabilirmiyiz "stack.data = int[60];" burada "data" "void*" tipinde bir işaretçidir burada "int[60]" ifadesine dikkat ettiyseniz "int a[60]" şekinde değil çünki yeni bir değişken oluşturmak yerine sadece stack alanından yer ayırıp başlangıç adresini "data" adlı değikene kaydetmek istedim böyle bir imkan varsa veya nasıl yapılıyorsa "heap" alanına ihtiyac duymayacağım ben bu koldarı yazında derleyici kabul etmiyor o yüzden bu soruyu sordum umarım nedemek istediğimi anlamışsınızdır biraz karmaşık olud galiba....

    cevabı buldum = "a = (int[50]) {};" şeklinde yapıca derleyici izin verdi sonra birkaç deneme yaptım sorun çözüldü



    < Bu mesaj bu kişi tarafından değiştirildi Harun2525 -- 5 Eylül 2015; 18:57:17 >
    |
    |
    elektro_gadget kullanıcısının, bahsedilen mesajını gör
    _____________________________




  • Yarbay
    3748 Mesaj
    quote:

    Orijinalden alıntı: Harun2525

    deiklerinizi anladım bu biglilerden yola çıkarak ve daha öğrenerek kendi generic push, pop, vs... generice ihtiyaç duyulan fonksiyonlarımı yazacağım bu arada muhtemelen sizinde aklınıza gelmiştir. ama merakımdan soruyorum neden "uint8_t temp[128];" kodu yerine neden "void *temp = malloc(size);" kodunu kullanmadınız iyimi demicem belki kötüdür ama bu bana daha mantıklı geliyor...

    Yapılan iş ne kadar temel seviyede ise o kadar hızlı olmak zorunda ki bunu kullanarak oluşturduğumuz yapılar da yavaş olmasın.

    malloc-free kullansaydık mesela bu fonksiyon ile yazacağımız bir generic_bubble_sort algoritması da otomatikman verimsiz olacaktı. Zaten çok uzun nesneler üzerinde işlem yapmak çok fazla koplayama gerektireceği için tercih edilmez. Onun yerine adresleri üzerinde işlem yapılır.

    Diğer soruna gelirsek yığını ne üzerinde tutacağın çok önemli. Anladığım kadarıyla dizi üzerinde tutmak istiyorsun. Eğer öyleyse başlı başlına bir dinamik dizi oluışturman ya da hazır bir tane kullanman gerekir. C std kütüphanesinde böyle bir işlev yok.

    Onun yerine önce bir genel bağlı liste oluştur, sonra bu bağlı liste ile yığın yapısını kurarsın. Diziye ekleme çıkarma yapmak sıkıntılı bir süreç iken bağlı listeye ekleme çıkarma yapmak çok basit. Fakat ben sana önce int türü ile çalışmanı, sonra generic hale çevirmeni tavsiye ederim.
    |
    |




Sayfaya Git:
Sayfa:
Reklamlar
Mobilya Takımları
Bey Azura
SEO
emek server
Bu sayfanın
Mobil sürümü
Mini Sürümü

BR2
0,203
1.2.165

Reklamlar
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.