Kaç saatir anlamaya çalışıyorum kaç video izledim kaç örneğe baktım ama yok anlayamıyorum,şimdi bu pointer ne yapıyor ve neden bu kadar gerekli mantığını anlamak istiyorum yardımcı olur musunuz?
C++ pointerın mantığı nedir?
Cevaplar
RAM'de karışık depolanan verilerin birbiriyle bağlantısını sağlıyor diyebilirim kısaca. Sonuçta sistem bellekte yer açarken bu konu bununla ilgili bunu da bunun yanına koyayım demiyor uygun boş bir yere rastgele(aslında tam rastgele değil ama böyle kabul edilebilir) yerleştiriyor. İşte bu yerleştirilen verilerin birbiriyle bağlantısına yarıyor. Başka işlere de yarıyor ama en net anlatan videolardan birisi diyebilirim.
Onu da izlemiştim neyse sabah beynim dinlendikten sonra tekrar dinleyim bugün fazla yordum şuan bilgi kabul etmiyor :/Görkem Say dedi: ↑RAM'de karışık depolanan verilerin birbiriyle bağlantısını sağlıyor diyebilirim kısaca. Sonuçta sistem bellekte yer açarken bu konu bununla ilgili bunu da bunun yanına koyayım demiyor uygun boş bir yere rastgele(aslında tam rastgele değil ama böyle kabul edilebilir) yerleştiriyor. İşte bu yerleştirilen verilerin birbiriyle bağlantısına yarıyor. Başka işlere de yarıyor ama en net anlatan videolardan birisi diyebilirim.
Kısaca kolay ulaşım ve belleği daha etkin kullanmaya yarıyor olay bu :)Onu da izlemiştim neyse sabah beynim dinlendikten sonra tekrar dinleyim bugün fazla yordum şuan bilgi kabul etmiyor :/
Yani bir değişkenin hem adresini hem de içindeki değeri tutuyor ve kolay ulaşım mı sağlıyor böyle mi
---- Mesajlar birleştirildi ----
---- Mesajlar birleştirildi ----
Yani bir değişkenin hem adresini hem de içindeki değeri tutuyor ve kolay ulaşım mı sağlıyor böyle miGörkem Say dedi: ↑Kısaca kolay ulaşım ve belleği daha etkin kullanmaya yarıyor olay bu :)
düzenlendi
İçindekini tutmuyor o zaten bellekte :D Pointer adı üstünde işaret ediyor yön levhası gibi. Bunu yaparken sürekli aynı veriyi yazmak yerine bir pointer ile o verilere çok kolay ulaşabiliyorsun. Veri yapıları dersi aldığın zaman daha net anlarsın diye düşünüyorum :)
Ben de niye anlamıyorum diyorum veri yapıları hakkında birazcık bile bilgim yok kesin o yüzden :D Neyse biraz anladım gibi oldu :DGörkem Say dedi: ↑İçindekini tutmuyor o zaten bellekte :D Pointer adı üstünde işaret ediyor yön levhası gibi. Bunu yaparken sürekli aynı veriyi yazmak yerine bir pointer ile o verilere çok kolay ulaşabiliyorsun. Veri yapıları dersi aldığın zaman daha net anlarsın diye düşünüyorum :)
Adres belirliyor olarak aklında tutabilirsin.
Mesela bir kız arkadaşını ziyaret edeceksin ama evi bilmiyorsun. Telefon açıp adresini soruyorsun, o da sana söylüyor. Sende söylenen adresi arıyorsun ve kız arkadaşını buluyorsun. İyi sohbetler.
Kafanda bu tür ve benzeri benzetmeler yaparsan, daha iyi anlayabilirsin. (Buna köprü kurmak denir)
Mesela bir kız arkadaşını ziyaret edeceksin ama evi bilmiyorsun. Telefon açıp adresini soruyorsun, o da sana söylüyor. Sende söylenen adresi arıyorsun ve kız arkadaşını buluyorsun. İyi sohbetler.
Kafanda bu tür ve benzeri benzetmeler yaparsan, daha iyi anlayabilirsin. (Buna köprü kurmak denir)
Veriler bellekte tutulurlar ve bellekteki her verinin bir adresi vardır. Global değişkenler statik verilerdir ve adresleri önceden bilinir. Bu verilere ismini kullanarak erişmek mümkündür. Mesela;
int a;
int main()
{
a = 12;
...
Buradaki a sürekli olarak sabit yerde durur, adresi her zaman bellidir. a = xx; yaptığımız zaman a hangi adreste duruyorsa o adrese xx yazılır.
Ancak çoğu zaman adresleri önceden bilmek mümkün değildir. Mesela bize 1 kb yer lazım oldu ve bunu işletim sisteminden istedik.
int *a = (int *) malloc(1024);
Burada bize tahsis edilen bellek herhangi bir bölgeden olabilir, adresini önceden bilemeyiz. Bu yüzden bu bölgede işlem yapabilmek için işletim sisteminin bize tahsis ettiği yerin başlangıç adresini bir değişken içinde tutmak zorundayız. İşte bu adres tutan değişkene pointer denir. Aslında bu adresler bildiğin sayıdır, yani bu adresi sıradan bir değişken içinde de tutabiliriz ama bu birçok çakışmaya yol açar. Bu yüzden adamlar adres tutmak için ayrı bir tür eklemişler dile. Bu sayede derleyici bu sayının sıradan bir sayı değil bir bellek adresi olduğunu bilir, ona göre işlem yapar.
Merak ettiklerin varsa sorabilirsin.
int a;
int main()
{
a = 12;
...
Buradaki a sürekli olarak sabit yerde durur, adresi her zaman bellidir. a = xx; yaptığımız zaman a hangi adreste duruyorsa o adrese xx yazılır.
Ancak çoğu zaman adresleri önceden bilmek mümkün değildir. Mesela bize 1 kb yer lazım oldu ve bunu işletim sisteminden istedik.
int *a = (int *) malloc(1024);
Burada bize tahsis edilen bellek herhangi bir bölgeden olabilir, adresini önceden bilemeyiz. Bu yüzden bu bölgede işlem yapabilmek için işletim sisteminin bize tahsis ettiği yerin başlangıç adresini bir değişken içinde tutmak zorundayız. İşte bu adres tutan değişkene pointer denir. Aslında bu adresler bildiğin sayıdır, yani bu adresi sıradan bir değişken içinde de tutabiliriz ama bu birçok çakışmaya yol açar. Bu yüzden adamlar adres tutmak için ayrı bir tür eklemişler dile. Bu sayede derleyici bu sayının sıradan bir sayı değil bir bellek adresi olduğunu bilir, ona göre işlem yapar.
Merak ettiklerin varsa sorabilirsin.
Pointerlar basit tanımı senin kaydettiğin verilerin bellekteki adreslerini tutan işaretci veya gösterici gibi çevrilen ve senin tuttuğun verileri adresinden kullanabildiğin bir çeşit dizidir. Anlamından çok mantığına ve birkaç örnekte kullanışına bakarsan anlayabilirsin. Basit örneklerle başlayıp zorlara doğru ilerle kolay gelsin
Çok daha basit yoldan anlayabilirsin. Verilerin tutulduğu yeri eviniz olarak düşün, evdeki herşeyin yerini kim bilir? Annen bilir. Bu durumda annen pointer. Diyelim ki evde cüzdanını, saatini ve şapkanı bulman gerekiyor. 3'ünü de perişan perişan ararsan yorulursun, sinirlenirsin... Her seferinde arayıp bulmak yerine annene sorarsın ve hızlı bir şekilde elinle koymuş gibi bulursun. Pointer bundan ibaret :)
👍 2
Efsane anlatış?teşekkür ederimÇok daha basit yoldan anlayabilirsin. Verilerin tutulduğu yeri eviniz olarak düşün, evdeki herşeyin yerini kim bilir? Annen bilir. Bu durumda annen pointer. Diyelim ki evde cüzdanını, saatini ve şapkanı bulman gerekiyor. 3'ünü de perişan perişan ararsan yorulursun, sinirlenirsin... Her seferinde arayıp bulmak yerine annene sorarsın ve hızlı bir şekilde elinle koymuş gibi bulursun. Pointer bundan ibaret :)
👍 1