Yrd. Doç. Dr. Caner ÖZCAN

Benzer belgeler
Yrd. Doç. Dr. Caner ÖZCAN

BLM 112- Programlama Dilleri II. Hafta 4 İşaretçiler (Pointers)

Pointers (İşaretçiler)

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN

8. İŞARETCİLER (POINTERS)

Pointer Kavramı. Veri Yapıları

Yrd. Doç. Dr. Caner ÖZCAN

ALGORİTMA VE PROGRAMLAMA II

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-3 İşaretçiler (Pointer) (Kısım-2)

BLM 112- Programlama Dilleri II. Hafta 5 İşaretçiler (Pointers)

BÖLÜM 9: POINTERLER (İŞARETÇİLER)

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-2 Değişken Kavramı ve Temel Operatörler

Göstericiler (Pointers)

Genel Programlama II

ALGORİTMA VE PROGRAMLAMA II

Yrd. Doç. Dr. Caner ÖZCAN

DİZİLER-KATARLAR ALGORİTMA VE PROGRAMLAMA II

Birlik (Union) 1 Birlik (Union), enum, typedef

YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta

Programlama Dilleri. C Dili. Programlama Dilleri-ders02/ 1

ÇOK BOYUTLU DİZİLER VE DİNAMİK BELLEK YÖNETİMİ İLE İLGİLİ ÖRNEKLER

Değişkenler. Geçerli değişken isimleri : baslamazamani, ad_soyad, x5 Geçersiz değişken isimleri : 3x, while

enum bolumler{elektronik, insaat, bilgisayar, makine, gida};

ALGORİTMA VE PROGRAMLAMA II

Programlama Dilleri. C Dili. Programlama Dilleri-ders08/ 1

Yrd. Doç. Dr. Caner ÖZCAN

Nesneye Yönelik Programlama (OOP) 7.Hafta

sayi=3 harf=a reelsayi=8.72 Bellek durumu 5. İşaretç iler (pointers)

C#(Sharp) Programlama Dili

ALGORİTMA VE PROGRAMLAMA II

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 2

Yrd. Doç. Dr. Caner ÖZCAN

YZM 2116 Veri Yapıları

Nesne Tabanlı Programlama

Struct VE GÖSTERİCİLER FONKSİYONLARDA STRUCT KULLANIMI Programlama dilleri hafta -

Programlama Dilleri 1. Ders 5: Göstericiler

PROGRAMLAMAYA GİRİŞ DERS 2

Örnek1: #include <iostream> #include <string> using namespace std;

Öğr. Gör. Musa AYDIN Fatih Sultan Mehmet Vakıf Üniversitesi

Sunum İçeriği. Programlamaya Giriş

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

Veri Yapıları. Amaçlar: Temel Veri Yapılarını Tanımlamalı Veri Yapılarını Veri Modeli ve Türlerini Öğreneceksiniz. İçindekiler:

HSancak Nesne Tabanlı Programlama I Ders Notları

BÖLÜM 11: YAPISAL VERİ TİPLERİ

YZM 2116 Veri Yapıları

Bölüm 8, Yrd. Doç. Dr. A. Kadir YALDIR PAÜ Bilgisayar Mühendisliği Bölümü BÖLÜM 8: DİZİLER

C Programlama Dilininin Basit Yapıları

İLERI MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

Diziler (Arrays) Çok Boyutlu Diziler

JAVADA DİZİ İŞLEMLERİ

Adım Adım C-II. Eksik kalmış konular

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN

Nesne Yönelimli Programlama

Dizi nin Önemi. Telefon rehberindeki numaralar, haftanın günleri gibi v.b.

Nesne Tabanlı Programlama

MAK 1005 Bilgisayar Programlamaya Giriş C DİLİNE GİRİŞ. Prof. Dr. Necmettin Kaya

Temel Bilgisayar Bilimleri Ders Notu #4-2. kısım

BLM 111 ALGORİTMA VE PROGRAMLAMA I

Dizi nin Önemi. Telefon rehberindeki numaralar, haftanın günleri gibi v.b.

Yrd. Doç. Dr. Caner ÖZCAN

Sınav tarihi : Süre : 60 dak. a) strstr b) strchr c) strcat d) strcpy e) strlen. a) b) d) e) 0

GENEL GĐRĐŞ-ÇIKIŞ FONKSĐYONLARI. ENF102 Jeoloji 1. #include <stdio.h> printf Fonksiyonu ÖRNEK. printf

Yrd. Doç. Dr. Caner ÖZCAN

Örnek 4: Örnek Özyinelemeli fonksiyon örneği Bölüm 9. C++ programlama dilinde Nesne ve sınıf

Bölüm 2 - C ile Programlamaya Giriş

Programlama Dilleri 1. Ders 12: Belirleyiciler ve Niteleyiciler

Mikroişlemcili Sistemler ve Laboratuvarı 6.Hafta

C# Yazım Kuralları ERCİYES. Ü. BİLGİSAYAR M. COMPUTER PROGRAMMING II 1 FEHİM KÖYLÜ

C PROGRAMLAMA D İ L İ

Bir dizinin boyutları sabittir ve kullanılmadan önce belirlenmelidir. Dizi boyutunu belirlemek için başka bir değişkende kullanabilirsiniz.

Yrd. Doç. Dr. Caner ÖZCAN

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

Konular. Hafta 5 Veri Tipleri (Devam) BLG339 PROGRAMLAMA DİLLERİ KAVRAMI

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 3. Bölüm Veri Tipleri ve Değişkenler

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

NESNEYE YÖNELİK PROGRAMLAMA

C++ Dersi: Nesne Tabanlı Programlama

Diziler İndisli Değişkenler

C++ Göstericiler (Pointer)

ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ. Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

3.1 Pointer in Yararları

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

Endüstri Mühendisliği Bölümü Bilgisayar Programlama Ders Notları

Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : dak.

YAPILAR (STRUCTURES)

2.2- DEĞİŞKENLER VE SABİTLER ÇALIŞMA YAPRAĞI

C PROGRAMLAMA D İ L İ

Yrd. Doç. Dr. Caner ÖZCAN

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-8 Dosya İşlemleri-1. Yrd. Doç. Dr. Ümit ATİLA

C++ Dersi: Nesne Tabanlı Programlama 2. Baskı

Değişkenler, içerisinde tek bir değer tutabilen yapılardır. Örneğin haftanın günlerini değişkenlerde tutmak istersek, her bir gün adı için bir

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-8 Değişken Tipleri ve Temel Giriş/Çıkış İşlemleri

YZM 2105 Nesneye Yönelik Programlama

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-1 Kapsama Kuralları & Rasgele Sayı Üretimi & Rekürsif (Özyinelemeli) Fonksiyonlar

KONTROL VE OTOMASYON KULÜBÜ

enum, struct, union ve typedef Yapıları

BMT 101 Algoritma ve Programlama I 6. Hafta. Yük. Müh. Köksal Gündoğdu 1

3 Sql Veri Tipleri. Veritabanı 1

Transkript:

Yrd. Doç. Dr. Caner ÖZCAN

Hafıza Yapısı Bir değişken tanımlandığında arka planda bilgisayarın hafızasında bir konuma yerleştirilir. Hafıza küçük hücrelerden oluşmuş bir blok olarak düşünülebilir. Bir değişken tanımlandığında bellek bloğundan gerekli miktarda hücre ilgili değişkene aktarılır. Hafızada değişken için ne kadar hücre ayrılacağı değişkenin tipine göre değişir. 2

Hafıza Yapısı 3

Hafıza Yapısı Hücrelerden oluşan bellek yapısını verilen kod parçası için uygularsak. int veri tipi 2 bayt, float tipinin 4 bayt, char tipinin de 1 bayt yer kapladığını varsayalım. Her bir hücre 1 bayt alanı temsil etsin. Değişkenler için ayrılan hafıza alanı 4300 adresinden başlasın. 4

Hafıza Yapısı Bir değişken tanımlandığında hafızada onun için gereken alan rezerve edilir. Örn. int num1 tanımlaması, bellekte uygun bir yerde 2 bayt alanın num1 değişkeni için ayrılmasını sağlar. Daha sonra num1 değişkenine 5 değeri atandığında ayrılan hafıza alanına 5 değeri kaydediliyor. Aslında, num1 ile ilgili yapacağınız bütün işlemler, 4300 adresiyle 4302 adresi arasındaki bellek hücrelerinin değişmesiyle alakalıdır. Değişken dediğimiz; uygun bir bellek alanının, bir isme revize edilip, kullanılmasından ibarettir. 5

Pointer Tanımlama Bir veri bloğunun bellekte bulunduğu adresi içeren (gösteren) veri tipidir. veri_tipi *p; p değişkeni <veri_tipi> ile belirtilen tipte bir verinin bellekte saklandığı adresi içerir. int *iptr; float *fptr; Dikkat edilmesi gereken tek nokta; pointer'ı işaret edeceği değişken tipine uygun tanımlamaktır. Yani float bir değişkeni, int bir pointer ile işaretlemeye çalışmak yanlıştır! 6

Pointer Tanımlama Bir pointer ın var olan bir değişkenin bulunduğu adresi göstermesi için değişkenin adresinin pointer a atanması gerekir. Bunun için değişkenin hafızada tutulduğu adresin bilinmesi gerekir. Bu da adres operatörü (&) ile mümkündür. &y y değişkeninin adresini verir. int y = 5; int *yptr; yptr = &y; 7

Pointer Tanımlama Pointer bir değişkenin adresinin gösterir şekilde atandıktan sonra o pointer, ilgili değişkeni işaret eder. Eğer bahsettiğimiz değişkenin sahip olduğu değeri pointer ile göstermek veya değişken değerini değiştirmek isterseniz, pointer başına '*' getirerek işlemlerinizi yapabilirsiniz. Pointer başına '*' getirerek yapacağınız her atama işlemi, değişkeni de etkileyecektir. 8

Pointer Tanımlama 9

Pointer Tanımlama (Değişkene Pointer ile Erişme) Pointer kullanarak, değişkenlerin sakladığı değerleri de değiştirebiliriz. Bir işaretçinin gösterdiği adresteki veriye erişmek için işaretçi değişkeninin önüne * karakteri eklenir. 10

Pointer Tanımlama (Değişkenleri Pointer ile İlişkilendirme) 11

Pointer Tanımlama Bir pointer'in işaret ettiği değişkeni program boyunca sürekli değiştirebilirsiniz. 12

Pointer Tanımlama Bir pointer ın boş bir veri bloğunu göstermesi için malloc fonksiyonu kullanılır. Bu yolla veriler için dinamik yer ayrılır. malloc(n) Boş bellekten n bayt yer ayırıp başlangıç adresini döndürür. iptr = (int*) malloc(sizeof(int)); ya da iptr = (int*) malloc(4); 13

Pointer Boyutu Pointer lar genelde sabit boyutta yer kaplar. Örneğin 32 bit bir sistemde genellikle pointerlar 32 bit olur. 14

Pointer Tutan Pointer lar Pointer'lar, gördüğümüz gibi değişkenleri işaret ederler. Pointer'da bir değişkendir ve onu da işaret edecek bir pointer yapısı kullanılabilir. Pointer değişkenini işaret edecek bir değişken tanımlıyorsanız; başına '**' getirmeniz gerekir. Buradaki * sayısı değişebilir. Eğer, pointer işaret eden bir pointer'i işaret edecek bir pointer tanımlamak istiyorsanız, üç defa yıldız ( *** ) yazmanız gerekir. 15

Pointer Tutan Pointer lar 16

Pointer Aritmetiği İşaretçi değişkenler üzerinde toplama ve çıkartma işlemleri (++, --) geçerlidir. Ancak eklenecek değer tamsayı olmalıdır. İşaretçi değişkenin değeri 1 arttırıldığı zaman değişken bir sonraki veri bloğunu işaret eder. Değişkenin alacağı yeni değer işaretçi değişkenin ne tip bir veri bloğunu işaret ettiğine bağlıdır. int i, *iptr; iptr = &i; // iptr örneğin 1000 nolu adresi gösteriyorsa iptr += 2 // Bu işlemden sonra iptr ın yeni değeri 1008 (iptr+2*4) Çünkü int tipi hafızada 4 bayt yer kaplıyor. 17

Pointer Aritmetiği 18

Pointer Aritmetiği int i, *iptr; iptr = &i; // iptr örneğin 1000 nolu adresi gösteriyorsa (*iptr) ++; // Bu işlem 1000 nolu adresin içeriğini 1 artırır. iptr ++; // Bu işlem iptr nin 1004 nolu adresi göstermesini sağlar (*iptr) +=2; // Bu işlem 1000 nolu adresin içeriğini 2 artırır. (*iptr) =7; // Bu işlem 1000 nolu adresin içeriğini 7 yapar. *(iptr+2) = 5; //iptr 1000 nolu adresi gösteriyorsa 1008 nolu adresin içeriğini 5 yapar. 19