faydası daha az hafıza tüketimi yapar program.

Forumda arama yaptım çok eski bir konu var ondada çok detaya inilmemiş yüzeysel bilgiler var. Bu pointerların tam olarak kullanım amacı nedir / nasıl kullanılır, efektif olarak nasıl kullanabiliriz. C++ altına açtım konuyu ama ben bunları php'de kullanacağım daha çok. .

: Jubei bunu yazdı: Pointer diye grünce bende hemen bildiklerimi yazayım dedim ama meğerse benim bildiğim pointer senin bildiğin pointer ile uymuyormuş :)) Senin pointer'ıda yaz aga bişey olmaz herkese kapımız açık :F Eyvallallh sağolasın, Benim bildiğim ve daha nce kullandığım pointer şudur, doğuda askerlik yapanlar bilir G3 ucuna takılır, çıplak gzle grülmez ve sadece gece grüş ile grünür laser pointer diye geçer nokta gstermek içindir. Ben demiştim sana benim bildiğim pointer ile senin bildiğin pointer uymuyor diye ama olsun en azından benim bildiğim pointer, i bilmiyenler ğrenmiş oldu :))

benim gzlediğim olay şyle. postacıya apartman adı vermezsen mahallendeki komşulara sorar adresini ğrenmek için ama pointer tam adrestir ve program nokta atışı yapar. eğer senin bir aile olduğunu biliyorsa sana 1 daire ayırır kabileysen konak ayırır yani programı rastgelelikten çıkarır kontrolü sana verir. ayrıca dinamik bellek olayıylada programın sınırını da çizebilirsin.

fiziksel belleğin isletim sistemi tarafindan referanslanmis hucrelerine direk erisimdir. Bazen hafizadan kazanmak adina kullanılabilir. Ornegin c familyasında fonksiyonlara parametre girdiginde aynı parametreler hafızada duplicate olur. Bunu engellemek icin kullanabilirsin. Bunun dısında "dynamic processing" mutlaka bunların vasıtasıyla olur. Java'da pointer yerine daha guvenle kullanabilecegin referans kavrami vardir. Perl'de her ikisi birden fln... #Coding Sacrifice Perl FSO#

Pointer diye grünce bende hemen bildiklerimi yazayım dedim ama meğerse benim bildiğim pointer senin bildiğin pointer ile uymuyormuş :))

: Pointer diye grünce bende hemen bildiklerimi yazayım dedim ama meğerse benim bildiğim pointer senin bildiğin pointer ile uymuyormuş :)) Senin pointer'ıda yaz aga bişey olmaz herkese kapımız açık :F.

biçok yerde kolaylık sağlar char dizi , p;p=dizi;for(int i=0;i<5;++i) printf ;

Bir nevi posta kutusudur.. Posta kutusu şeklinde bir değişkendir.. Diğer değişkenlerin bellek adreslerini tutarlar.. rneğin "k " diye tam sayı bir değişkenimiz olsun... derleyici bu "k" için bellekte bir yer ayırır.. fakat bu belleğin adresi nedir? bunu için bir adres saklayan başka bir değiken tanımlayabiliyoruz bu da "a" olsun.. bunu bildiriken int a; // diyoruz.. yani "a bir tam sayı değişkeninin bellek adresini tutar" diyoruz.. sonra "k" nın adresini a ya yüklemek için de a=&k //deyimini kullanyoruz cout< dediğimizde 00ff1212 gibi bir adres çıktısı alaırız ancak cout<< a; dediğimizde a da hengi değişkenin adresi tutuluyorsa onun "değeri" basılır.. rneğimizde k nın değeri 10 olsaydı 10, 20 olsaydı 20 [k değişkeninin o an taşıdığı, sahip olduğu değer} eğer a=50; dersek adresteki değeri yani bu rneğimizde k yı 50 yapmış oluruz edit şurdaki rdek güzel http://www.ceviz.net/c-da-pointer-kavrami_a754.html Din Kitaplarını Okuyup Anlayana Ateist, Okuyup Anlamayanlara "dindar" denir... Nikola TESLA.. ben mi? Ne okurum ne anlarım... Kendi kendime de uyuz oluyorum ama olamıyorum.. "Ama efsaneyi çıkarıp atarsan ve yaptıkları eylemlere bakarsan... .. Jedi'ların mirası başarısızlıktır. İkiyüzlülüktür, kibirdir."

#include <cstdlib> #include <iostream> using namespace std; int main Din Kitaplarını Okuyup Anlayana Ateist, Okuyup Anlamayanlara "dindar" denir... Nikola TESLA.. ben mi? Ne okurum ne anlarım... Kendi kendime de uyuz oluyorum ama olamıyorum.. "Ama efsaneyi çıkarıp atarsan ve yaptıkları eylemlere bakarsan... .. Jedi'ların mirası başarısızlıktır. İkiyüzlülüktür, kibirdir."

Pointerlar yani türkçe olarak gstericiler adres kavramıyla ilgili bir konu. Nesnemizin nasıl değeri, türü, bilinirlik alanı , mrü varsa adreside vardır. Adres bize nesnenin bellekte bulunduğu yeri gsterir. İçinde adres tutan değişkenlere pointer diyoruz. Resimde p bir pointer x de bir değişken. p int türden bir pointer x int türden bir değişken. x double türden olsaydı pointer da double yıldız türünden diyecektim. x in içinde 30 var diyelim. x in sag üstündeki 1FF4 x in adresi olsun diye salladım. simdi ordaki p x in adresini içinde tutuyo. içerik operatoru & adres operatoru p dediğim zaman p ye bakıyorum içinde ne var 1FF4 var yani x in adresi yani x in kendisi resme gre p nin değeri 30 dur. grünce içine bak gibi düşünebiliriz. &x dersemde x in adresini gstermiş olurum &x in degeri = 1FF4 #include int main pointer konusu cok ayrıntılıdır tabikide kısaca ne olduğunu anlatmaya calıstım zetle içinde adres tutan değişken.

C++ için basit kısa geçeyim... ncelikle pointer değişkenler int değişkenlerde farksızdır. Yani int değişken ne tutar? Tamsayı!!!! Pointer değişkenlerde tamsayı tutar. Yani int bir değişkendir aslında. Ama farkı şudur. Pointer değişkenlerin tuttuğu sayılar nemlidir. Bu sayılar belleğin hücrelerinden birini temsil eder. (Genel bellek şemasını düşün her bellek hücresi 1 bytedır ve her byte ın kullanımı için o hücrenin sayısal bir adresi vardır.) int x=1;int ptr; diyelim. normalde x 4 byte bellekte yer kaplayan değişken olduğunu biliyoruz (32 bit bir derleyici ve işletim sisteminde) Yani x bellekte 4 tane hücre kaplıyor. 00000000 (1. hücre Adresi:2DFFD1)00000000 (2. hücre Adresi:2DFFD2)00000000 (3. hücre Adresi:2DFFD3)00000001 (4. hücre Adresi:2DFFD4) ptr=&x; dediğimiz zaman derleyici x'in 1. hücresinin adresini ptr değişkenine atıyor. Yani ptr değişkenin içeriği 2DFFD1 oluyor (Sayıları sallıyorum mantık arama. 16 tabanındaki sayı sistemine gre sylüyorum.) cout << ptr; // dediğin zaman 2DFFD1 sayısını grürsün.. cout << ptr; // dediğin zaman ekrana x in değeri olan 1 yazdırır. pointer değişkenlerin tek farkı ptr gibi bir biçimde kullanıyor olmamız ptr=3 dediğimiz zaman derleyici şunu yapıyor... ptr değişkenin içeriğindeki 2DFFD1 (yani x in 1. hücresi) adresinden itibaren toplam 4 byte boyunca (4 hücre boyunca) ki boyuta 3 yaz diyor. (peki neden 4 byte yani ptr sadece adres taşıyor? çünkü her pointer değişkenin hangi tip değişkeni tutacağını zaten başta belirtiyorsun. INT ptr; dediğinde zaten int bir değişkende işlem yapacağım, 4 byte üzerinde işlem yapacağım diyorsun.) Yani şu oluyor 00000000 (1. hücre Adresi:2DFFD1) 00000000 (2. hücre Adresi:2DFFD2) 00000000 (3. hücre Adresi:2DFFD3) 00000011 (4. hücre Adresi:2DFFD4) Olay budur. pointer kavramını anlaman için çok rnek çzmen gerekli. pointerın pointer ı pointer referansları, void pointer hepsi ayrı bir rnektir. Hepsini denemen gerek mantığını kavraman için. Ama basit bir konudur. Bu imzayı her grdüğünüzde 4gb kotanızın 0,00000358559191226959228515625 azalmaktadır. Bilerek ve istenerek bu imza yapılmıştır. Amaç kotanızı smürmektir

pointerlar C# daki referans etme ile ayni sekilde kullaniliyordu C++ da; obje gonderiminde basina koyuyorduk galba kullanim mantigi bir objenin bir fonksiona yada classa yollanmasi yerine onun bellekte bulundugu yerin yollanmasi sekildedir. bu sayede 2 tane avantaj elde etmis oluruz. 1. avantajimiz fonksiona referans ile yada point ile yolladigimiz nesne de yaptigimiz degisiklikler return aldiktan sonra ki programda devam eden kisimde aynen gecerlidir turkcem cok iyi olmadigindan biraz devrik oldu ama soyle ornek vereyim bir degiskene elma yazdin bunu pointer ile yolladigin bir fonksionda armut yaptin sonra ana program dondugunde armut kalacaktir; ama direk yollarsan o fonksion icin ramde yeni bir yer acili yeni acilmis yerde islem yapili sonra program kaldigi yerden devam ederken eski uzerinden calismaya devam edilir. Paremetreler den return almaya yaramis oldu bu avantajda 2. avantajida ram kullanimi illk avantajin icinde dedigim gibi direk kullanimda Ram de yeni alan acilacaktir; bu alan ram kullanimi artirimi yapacak. 2. olan tabiki avantaj ama 1. her zaman avantaj degildir. Bu aralar fazla yogunum. Unuttugum seyler oluyorsa affola. DM vs atın.