Şimdi Ara

pointer heap erişimi yapılırken kac byte olacagi sorunu

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
4
Cevap
0
Favori
134
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhaba arkadaslar dikdortgen tipinden bir struct yapım var icinde 3 adet int tipinden veri tutuyor.
    int main() de Heap de dikdortgen tipinden verilerin tutuldugu bir dizi olusturuyorum.pp pointer ı ile heap deki dizinin baslangıc adresini tutuyorum.

    alanyazdir() isimli fonksiyonum var.Bu fonksiyonun parametresi dikdortgen tipinden verilerin adresi tutan bir işaretçi.




    Problem şu:
    dikdortgen yapisi 12 byte lık veri tutuyor alanyazdir() fonksiyonunu calıstırmak icin 12 byte aralıklarla adres göndermemiz gerekmiyor mu?
    Neden alanyazdir(pp+i*12) yazmak yerine alanyazdir(pp+i) yazıyoruz?




    struct dikdortgen{
    int genislik;
    int yukseklik;
    int alan;
    };

    int alanyazdir(dikdortgen* p)
    {
    return p->genislik*p->yukseklik;
    }

    int main()
    {
    dikdortgen* pp=new dikdortgen[5];

    for(int i=0;i<5;i++)
    {
    pp[i].genislik=i;
    pp[i].yukseklik=i;
    cout<<"dikdortgen"<<i<<":<<alanyazdir(pp+i)<<endl;

    }
    }



    < Bu mesaj bu kişi tarafından değiştirildi my-lord -- 12 Kasım 2017; 16:4:11 >







  • Göstericiyi bir artırıyoruz gösterdiği veri tipine göre okadar adres atlıyor bu yüzden gösterici tipi belirlenir byte byte görmek istiyorsan pointer byte türüne cast etmen gerekir ama nesnelerde hata alabilirsin

    < Bu ileti tablet sürüm kullanılarak atıldı >
  • compiler o structın 12 byte olduğunu biliyor.
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.