[Çözüldü] Hafıza adresleri hakkında iki küçük soru

Başlatan Pozitron, 19 Ağustos 2015 - 00:35:27

« önceki - sonraki »

0 Üyeler ve 6 Ziyaretçi konuyu incelemekte.

Pozitron

Merhaba arkadaşlar,
Pointerları yeniden gözden geçirmeye karar verdim hiçbirşeyi ezbere ilerletmemek için.O yüzden Pointer konusuna tekrar baktım.Şöyle bir örnek vardı hafıza adresleri hakkında:
#include <stdio.h>

int main ()
{
   int  var1;
   char var2[10];

   printf("Address of var1 variable: %x\n", &var1  );
   printf("Address of var2 variable: %x\n", &var2  );

   return 0;
}


Ben bunun üstünde bir değişiklik yaptım ( '&' sildim) ve yine de bana adres verdi. Tabi * bir şey dikkatimi çekti;o da adresin b7... diye gitmesi. Normal,üstteki koddaki gibi çalıştırılırsa bf.... adresi veriyor her türlü.

1-bf yi buffer anlamında mı veriyor? (Ne alaka ?)
2-Neden & silmeme rağmen adres verdi.Sonuçta bu operatör adres almıyor mu?
To follow the path,look to the master,follow the master,walk with the master,see through the master,become the master.

freeman

var1 değişkeni
Herhangi bir ilk değer vermemişsin. Bu yüzden '&' olmadan,
- Değişkenin normal, sahip olduğu değeri yazdırmak istiyorsun demektir,
- Ama değişkenin bir ilk değeri olmadığı için, o an bellekten rastgele bir değer yazdırılıyor. (adres değil yani)

var2 değişkeni,
- Bir dizi.
- Bir dizinin ismi, dizinin ilk elemanının adresini saklayan bir göstericidir.
- Yani, &dizi ile sadece dizi 'nin adresleri aynıdır.
Good morning and welcome to the Black Mesa Transit System. This automated train is provided for the security and convenience of the Black Mesa Research Facility personnel.

Pozitron

Alıntı yapılan: SkynetX - 19 Ağustos 2015 - 01:39:24
var1 değişkeni
Herhangi bir ilk değer vermemişsin. Bu yüzden '&' olmadan,
- Değişkenin normal, sahip olduğu değeri yazdırmak istiyorsun demektir,
- Ama değişkenin bir ilk değeri olmadığı için, o an bellekten rastgele bir değer yazdırılıyor. (adres değil yani)

var2 değişkeni,
- Bir dizi.
- Bir dizinin ismi, dizinin ilk elemanının adresini saklayan bir göstericidir.
- Yani, &dizi ile sadece dizi 'nin adresleri aynıdır.

Evet zaten rastgele oluşturuluyor da o rastgele oluşturulan değerler de bir adresde tutuluyor bf... diye eğer '&' var ise.Yoksa yine adres tutuyor ama b7... diye gidiyor.Her türlü adresi gösteriyor.Rastgele değer rakamlardan oluşuyor zaten.Sorum ise & operatörü olmasa bile printfdeki %x'in adres vermesiydi.
To follow the path,look to the master,follow the master,walk with the master,see through the master,become the master.

freeman

Bir noktayı açıklamayı unutmuşum,
- "%x" format belirleyicisi >> var1 değişkeninin içeriğini 16 tabanına çeviriyor.

Mesela var1 = 45678; diye  bir değeri olsun.


printf("%x", var1); // çıktı: b26e. 16 sayı tabanı
printf("%x", &var1); // çıktı: fefbc0. gerçek adres
Good morning and welcome to the Black Mesa Transit System. This automated train is provided for the security and convenience of the Black Mesa Research Facility personnel.

-DıLgEş-

%x kullanmadan denersen adresi göndermez. Değişkenin değerini gönderecektir.
Aşkın; gözü kör, kulağı sağır, dili tutuk, aklı kıttır..! Hayır yani bu halde nasıl herkesi madara ediyor onu çözemedim..

Pozitron

Alıntı yapılan: SkynetX - 19 Ağustos 2015 - 11:17:52
Bir noktayı açıklamayı unutmuşum,
- "%x" format belirleyicisi >> var1 değişkeninin içeriğini 16 tabanına çeviriyor.

Mesela var1 = 45678; diye  bir değeri olsun.


printf("%x", var1); // çıktı: b26e. 16 sayı tabanı
printf("%x", &var1); // çıktı: fefbc0. gerçek adres


Şimdi anladım yani & olmazsa o yüzden b7... li şeyler alıyorum. Peki bf... şeklinde çıkıyo tüm adresler,böyle olmasının nedeni tarihsel mi buffer anlamına mı geliyor?Çünkü ne kadar denersem deneyeyim hep bf ile başlıyor.
Alıntı yapılan: nurullahisrgan - 19 Ağustos 2015 - 13:08:49
%x kullanmadan denersen adresi göndermez. Değişkenin değerini gönderecektir.
Evet onunla bir sorun yok :)
To follow the path,look to the master,follow the master,walk with the master,see through the master,become the master.

Amenofis

Ne tarihseli yahu 16 lık sayı sistemini bilmiyormusun?

b -> 11
f -> 15
anlamına geliyor.

freeman

Alıntı yapılan: PozitronŞimdi anladım yani & olmazsa o yüzden b7... li şeyler alıyorum. Peki bf... şeklinde çıkıyo tüm adresler,böyle olmasının nedeni tarihsel mi buffer anlamına mı geliyor?Çünkü ne kadar denersem deneyeyim hep bf ile başlıyor.
Hafıza adreslerini işletim sitemi&derleyici beraber belirler. Tarihsel bir durum yok. 
Ek olarak 'register' in 'buffer' ile zaten bir alakası yok.

Kolay gelsin
Good morning and welcome to the Black Mesa Transit System. This automated train is provided for the security and convenience of the Black Mesa Research Facility personnel.

Pozitron

Alıntı yapılan: SkynetX - 19 Ağustos 2015 - 23:34:44
Alıntı yapılan: PozitronŞimdi anladım yani & olmazsa o yüzden b7... li şeyler alıyorum. Peki bf... şeklinde çıkıyo tüm adresler,böyle olmasının nedeni tarihsel mi buffer anlamına mı geliyor?Çünkü ne kadar denersem deneyeyim hep bf ile başlıyor.
Hafıza adreslerini işletim sitemi&derleyici beraber belirler. Tarihsel bir durum yok.
Ek olarak 'register' in 'buffer' ile zaten bir alakası yok.

Kolay gelsin
Evet zaten alakası yok da hepsi bf ile başlayınca ne olabilir acaba diye merak etmiştim.Teşekkürler
To follow the path,look to the master,follow the master,walk with the master,see through the master,become the master.