Şimdi Ara

C de ' pop fonksiyonu ' değer döndürmek zorundamı ? (2. sayfa)

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
1 Misafir - 1 Masaüstü
5 sn
22
Cevap
0
Favori
579
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: önceki 12
Sayfaya Git
Git
Giriş
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 >




  • 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.




  • 
Sayfa: önceki 12
Sayfaya Git
Git
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.