Arama butonu
Bu konudaki kullanıcılar: 1 misafir
3
Cevap
157
Tıklama
0
Öne Çıkarma
Pointers C++
T
4 yıl
Teğmen
Konu Sahibi

< Resime gitmek için tıklayın >

3 ve 4. Satırda neden bir önceki satırda gösterdiği değerin 1 fazlasını göstermedi?
3. Satır: 3
4. Satır: 4 neden olmadı?





< Bu mesaj bu kişi tarafından değiştirildi trgtyt -- 5 Temmuz 2021; 23:11:43 >

< Bu ileti Android uygulamasından atıldı >

T
4 yıl
Yarbay

gcc-10 ile biraz farklı sonuçlar cıktı. Senin SS'teki Microsoft C/C++ Optimizing Compiler, farklı sonuç veriyor olabilir.
< Resime gitmek için tıklayın >



< Bu ileti mini sürüm kullanılarak atıldı >

R
4 yıl
Binbaşı

  • Satır: *ptr, i={1,2,3,4,5} dizisindeki ilk elemanı gösteriyor ve bu değer print ediliyor. Yani 1.
  • Satır : ++*ptr ile dizin birinci elemanının değeri bir artırılıyor. Yeni dizi i={2,2,3,4,5} oluyor. Hala pointer dizin 1. elamanını yani yeni 2 yi gösteriyor ve bu değer print ediliyor.
  • Satır: *++ptr ile önce pointer adresi dizinin ikinci elemanına taşınıyor ve dizin ikinci elemanının değeri yani 2 print ediliyor.,
  • Satır: *ptr++ ile pointer hala dizinin 2. elemanını gösterirken 2 değeri print ediliyor ve print işleminden sonra pointerin gösterdiği adres bir artırılıyor. Artık pointer dizinin 3. elemanını gösteriyor.
  • Satır: *ptr ile pointerin gösterdiği dizin 3. elemanındaki değer olan 3 değeri print ediliyor.

Pointer konusunda farklı derleyecilerin veya derleyeci optimizasyonlarının hata yapması veya farklı değerler üretmesi kabul edilemez bir hata/eksiklik olur. :)

Edit: 4. maddedeki yanlışlık düzeltildi.





< Bu mesaj bu kişi tarafından değiştirildi rafet32 -- 6 Temmuz 2021; 18:32:10 >

R
4 yıl
Binbaşı

Dizin elemanlarını şu şekilde değiştirirseniz sonuçları yorumlamak çok daha kolay olur.

< Resime gitmek için tıklayın >



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.