Şimdi Ara

C de printf de adres bildirimi sorunu

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
6
Cevap
0
Favori
947
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Arkadaşlar şöyle ufak bir kod parçam var. Amacım rastgele üretilen 10 sayının adreslerini ekrana yazdırmak. Sorun şu ki ??????? yazan yere ne yazacağımı kestiremedim, bulamadım. Yardım edebilecek birisi var mı ?

     
    #include "stdafx.h"
    #include <stdio.h>
    #include <stdlib.h>

    int _tmain(int argc, _TCHAR* argv[])
    {
    int *p;
    p= (int *)malloc(10*sizeof(int));

    for (int i=0; i<20; i++) {
    *(p+i) = rand();
    printf(" Dizini %d. elemaninin adresi = %p dir\n", *(p+i), ??????????);

    getchar();
    }



  • printf(" Dizini %d. elemaninin adresi = %p dir\n", *(p+i), ??????????);

    bi kere bu satırda *(p+i) yerine i+1 yazman gerekiyor yani for daki i'yi yazacaksın sadece i yazarsan 0.elemanından başlar. dizinin kaçıncı elemanı olduğuna ondan ulaşırsın. *(p+i) 'i de soru işaretli kısma yazacaksın

    edit: *(p+i) yazarsan sayının kendisini verir (p+i) yazacaksın sadece



    < Bu mesaj bu kişi tarafından değiştirildi someonewhoaintbelongshere -- 11 Haziran 2014; 0:50:17 >
  • quote:

    Orijinalden alıntı: Fdumanli

    printf(" Dizini %d. elemaninin adresi = %p dir\n", *(p+i), ??????????);

    bi kere bu satırda *(p+i) yerine i+1 yazman gerekiyor yani for daki i'yi yazacaksın sadece i yazarsan 0.elemanından başlar. dizinin kaçıncı elemanı olduğuna ondan ulaşırsın. *(p+i) 'i de soru işaretli kısma yazacaksın


    İlk söylediğiniz doğru ancak ikinci söylediğinizde yanlış var. Adres yazdırmak istediği yere *(p+i) gönderilirse pointer'ın point ettiği yeri yani elemanın kendisini adres olarak bastırır, yani random sayıların 16 tabanındaki ekranda görünür.

    @Sofiman, printf'e ilk argüman olarak Fdumanli'nin dediği gibi (i+1), ikinci argüman olarak da (p+i) gönderirsen görmek istediğin output'u ekranda görebilirsin.




  • quote:

    Orijinalden alıntı: therev

    quote:

    Orijinalden alıntı: Fdumanli

    printf(" Dizini %d. elemaninin adresi = %p dir\n", *(p+i), ??????????);

    bi kere bu satırda *(p+i) yerine i+1 yazman gerekiyor yani for daki i'yi yazacaksın sadece i yazarsan 0.elemanından başlar. dizinin kaçıncı elemanı olduğuna ondan ulaşırsın. *(p+i) 'i de soru işaretli kısma yazacaksın


    İlk söylediğiniz doğru ancak ikinci söylediğinizde yanlış var. Adres yazdırmak istediği yere *(p+i) gönderilirse pointer'ın point ettiği yeri yani elemanın kendisini adres olarak bastırır, yani random sayıların 16 tabanındaki ekranda görünür.

    @Sofiman, printf'e ilk argüman olarak Fdumanli'nin dediği gibi (i+1), ikinci argüman olarak da (p+i) gönderirsen görmek istediğin output'u ekranda görebilirsin.

    hocam editlemiştim mesajı bi baksaydınız :)




  • iKİNİZEDE TEŞEKKÜR EDERİM. Sorun çözüldü. Çok sağolasınız
  • quote:

    Orijinalden alıntı: Fdumanli

    quote:

    Orijinalden alıntı: therev

    quote:

    Orijinalden alıntı: Fdumanli

    printf(" Dizini %d. elemaninin adresi = %p dir\n", *(p+i), ??????????);

    bi kere bu satırda *(p+i) yerine i+1 yazman gerekiyor yani for daki i'yi yazacaksın sadece i yazarsan 0.elemanından başlar. dizinin kaçıncı elemanı olduğuna ondan ulaşırsın. *(p+i) 'i de soru işaretli kısma yazacaksın


    İlk söylediğiniz doğru ancak ikinci söylediğinizde yanlış var. Adres yazdırmak istediği yere *(p+i) gönderilirse pointer'ın point ettiği yeri yani elemanın kendisini adres olarak bastırır, yani random sayıların 16 tabanındaki ekranda görünür.

    @Sofiman, printf'e ilk argüman olarak Fdumanli'nin dediği gibi (i+1), ikinci argüman olarak da (p+i) gönderirsen görmek istediğin output'u ekranda görebilirsin.

    hocam editlemiştim mesajı bi baksaydınız :)

    1 dk fark ile gözümden kaçmış :)




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