Dizideki elemanların adresleri peş peşe olmak zorunda mı ?
Yoksa bir yerde hata mı yaptım?
(https://s24.postimg.cc/hufre8vld/c123.png) (https://postimg.cc/image/hufre8vld/)
diziyor. dizi, array.
Alıntı yapılan: muhittin_kaplan - 14 Ocak 2017, 21:29:14
diziyor. dizi, array.
Yerli yabancı kitap örneklerinde adresler hep düzgün sıralanıyor. Elimdeki kaynaklarda da aksi bir durumdan bahsedildiğini görmedim. O yüzden sordum. Sıkıntı yok o zaman.
seninki düzgün sıralı değil mi ?
Alıntı yapılan: muhittin_kaplan - 14 Ocak 2017, 21:33:25
seninki düzgün sıralı değil mi ?
0028FF10
0028FF48
76109E34
0028FF78
004011E7
00000001
Hayır 5 elemanın adresleri bu şekilde
int *p,a[]={1,10,15,20,25};
printf("P degeri %u",p);
printf("A0 adres %u\r\n",&a[0]);
printf("A1 adres %u\r\n",&a[1]);
printf("A2 adres %u\r\n",&a[2]);
printf("A3 adres %u\r\n",&a[3]);
printf("A4 adres %u\r\n",&a[4]);
return 0;
sen a nın adresini atmamışsın
int var = 20; /* actual variable declaration */
int *ip; /* pointer variable declaration */
ip = &var; /* store address of var in pointer variable*/
Alıntı yapılan: muhittin_kaplan - 14 Ocak 2017, 21:42:51
sen a nın adresini atmamışsın
int var = 20; /* actual variable declaration */
int *ip; /* pointer variable declaration */
ip = &var; /* store address of var in pointer variable*/
a bir dizi olduğu için ismini yazığımda a[0]'ın adresini yazmış oluyor. Atamada sorun yok ancak sorun;
(&p)[0]
&p[0]
bu ikisi arasında. Pointer kısmını paranteze almam ne gibi bir fark oluşturuyor? Alttaki gibi yapınca çalışıyor.
Burada sorun şundan kaynaklanıyor
Paranteze alınca pointerin adresi alınıp işleme sokuluyor.
Ama parantezsiz olunca p nin tuttuğu adrese 0 (sizeof pointerin türü) eklenip daha sonra onun adresi alınıyor.
Yani birinde pointerin kendi adresini alıyorsun, alttakinde parantezsiz olanda ise pointerin içeriğini alıp adresini kullanıyorsun.
Biraz daha açayım, elinde bir tane zarf var ve zarfın bir unique numarası var kabul et. Bu zarfın içinde başka bir zarfın numarası var.(içerideki adres dizinin başlangıç adresi olsun).
Sen dışarıdaki zarfın adresini alıp ona 0 toplayıp sonra eline geçen adres ile işlem yapınca içerideki zarf ile işlem yapmış olmazsın.
C dili diğer diller gibi bir değildir. Onu öğrenip kullanmak için ya okuldan sağlam bir eğitim almalısınız veya kendi kendine öğrenebilme yeteneğiniz iyi ise sağlam bir çalışma yapmalısınız.
Bunların hiç biri yoksa bu sefer dışardan eğitim almanızı tavsiye ederim.
Alıntı yapılan: mir_as82 - 15 Ocak 2017, 08:57:44
C dili diğer diller gibi bir değildir. Onu öğrenip kullanmak için ya okuldan sağlam bir eğitim almalısınız veya kendi kendine öğrenebilme yeteneğiniz iyi ise sağlam bir çalışma yapmalısınız.
Bunların hiç biri yoksa bu sefer dışardan eğitim almanızı tavsiye ederim.
Problemi ve çözümünü anladım çok teşekkürler. Okul eğitimlerinde en fazla toplama çıkartma öğretiliyor maalesef. Mantığı ve işleyişini anlamak için yarım dönem yeterli olmuyor. Şuan Necati Ergin hocanın pdf ders notundan gidiyorum. İmkanım olursa ileri ki dönemlerde CSD'de Necati hocadan ders almaya çalışacağım.
Okulda eğitim veren hocalar da bilmiyor zaten. Üniversite nin birinde(iki yıllık değil, 4 yıllık mühendislik eğitimi veren bir sınıfa ders veren) C dersi verdiğini söyleyen bir hocanın global alanda tanımlanan değişkenin hayata varsayılan değerle geleceğini bilmediğine bizzat şahit oldum.