Pointer (İşaretçi) Yapısal Veri Tipleri (Struct)

Slides:



Advertisements
Benzer bir sunumlar
Dizi Kullanan Örnekler
Advertisements

STRİNG FONKSİYONLARI.
Diziler.
Bölüm 8 Diziler Dizi Tanımı Dizi Elemanlarına Değer Atama
Bölüm 12 ÜST DÜZEY KONULAR Dinamik Bellek Ayırma Önişlemci
Göstericiler (Pointers)
Nesneye Yönelik Programlama
void medyan(int cevap[]) { int j; siralama(cevap);
Bölüm 7 Fonksiyonlar GÖSTERGELER Gösterge Tanımı
String Diziler(Katarlar)
Atama ve Girdi/Çıktı Komutları
OOP4 LAB.
Soru1: kuvvet(taban,us) Şeklinde bir yinelenen fonksiyon yazın
String Kütüphanesindeki Arama Fonksiyonları
Bölüm 10 Yapılar ve Birleşimler
Bölüm 3: Göstergeler BTEP 102 – Veri Yapıları ve Programlama
Fonksiyonlar.
SINIFLAR VE DİNAMİK BELLEK YÖNETİMİ
Diziler Adres Kavramı Nesnelerin Adresleri sizeof Operatörü
Diziler Dizi Tanımı Dizi Elemanlarına Değer Atama Diziler ve Göstergeler 2-Boyutlu Diziler.
Algoritma & Programlama
Fscanf fonksiyonu fscanf () : Dosyadan bilgiyi okumak ve değişkenlere aktarmak için kullanılır. int fscanf(FILE *dosya, char* format, değişken adres listesi);
Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar
Diziler (Arrays).
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
SINIFLAR VE DİNAMİK BELLEK YÖNETİMİ VE SINIFLARIN DİĞER ÖZELLİKLERİ Yılmaz Kılıçaslan.
Diziler. Dizi Tanımı Dizi Elemanlarına Değer Atama Diziler ve Göstergeler 2-Boyutlu Diziler.
VERİ TİPLERİ VE DEĞİŞKENLER
The if statement. if Şartlı kontrol Koşul değimi doğru (1) yada yanlış (0) değeri üretir. Şartın doğru olması durumunda if satırından sonraki değimler.
VERİ YAPILARI İşaretçi Nedir? Nesne Tabanlı Programlama.
Bu günkü konular Basit I/O Expressions (ifadeler)
Bugünkü Konular Döngüler ve Akış Diyagramları C de Döngü Tanımlama
1 Yapılandırılmamış programlama Prosedür/Fonksiyon gerekliliği Prosedural Programlama Fonksiyon Tanımlama/Prototip/Çağırma Örnek fonksiyonlar Fonksiyon.
2. HAFTA 2. Hafta.
Algoritmalar ve Programlama I Ders 10: ALTPROGRAM KAVRAMI ve FONKSİYON
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Algoritmalar ve Programlama I Ders 5: Operatörler
Bölüm 3 Atama ve Girdi/Çıktı Komutları Bölüm 3 Atama ve Girdi/Çıktı Komutları Atama Komutu Operatörler İsim Sabitleri Veri Tipi Dönüşümü Çıktı Fonksiyonu.
Algoritmalar ve Programlama I Ders 8:DİZİ (VEKTÖR) KAVRAMI
4. Hafta1 4. HAFTA. 4. Hafta2 Fonksiyonlar  Büyük problemler, küçük parçalara bölünerek kolay çözülür  Yazılımlar benzer modüller içerirler  Hata ayıklama.
BİLGİSAYAR programlama II
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
1 7. HAFTA. 2 Referanslar  Referanslar adres temsilcisidir  İşaretçilerin görevlerini kısmi olarak yapabilirler  Değişken değildirler.  Bellekte yer.
Döngü Komutları. for deyimi bir alt limitten, bir üst limite kadar programın belirli bir parçasını tekrar eder. for deyiminde sayaç artış oranı da verilmelidir.
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Fonksiyonlar.
BİLGİSAYAR programlama II
BİLGİSAYAR programlama II
Sıralama. Sıralama, bir dizideki sayısal elemanların küçükten büyüğe veya büyükten küçüğe, sayısal olmayan bir dizideki elemanların ise A’ dan Z’ ye.
1 Değişken alanları Geçici değişkenler Birleşik ifadeler(bloklar) ve değişkenler Değişken Depolama Süresi ve Alanı –Local ve global değişkenler –Static.
BİLGİSAYAR PROGRAMLAMA Ders 11: İşaretçi (Pointer) Kullanımı Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği.
Bölüm 4 Seçme Komutları Alıştırmalar
Bölüm 3 Atama ve Girdi/Çıktı Komutları
Fonksiyonlar ve Diziler
Printf Bu komut ekrana çıktı veren komuttur. Pascalda kullanılan writeln komutuyla aynı anlamdadır.
Bölüm 7 Fonksiyonlar GÖSTERGELER Gösterge Tanımı
BİLGİSAYAR PROGRAMLAMA Ders 8: Fonksiyonlar
BÖLÜM 5 POINTER’LER (İŞARETÇİLER)
C Programlama Diline Giriş
C PROGRAMLAMADA AKIŞ KONTROLÜ
Bölüm 8 Diziler Dizi Tanımı Dizi Elemanlarına Değer Atama
C Programlama Yrd.Doç.Dr. Ziynet PAMUK BMM211-H11
Bölüm 8 Diziler Dizi Tanımı Dizi Elemanlarına Değer Atama
PROGRAM KONTROL KOMUTLARI 1. if koşulu 2. if else koşulu
YAPISAL PROGRAMLAMA Hafta-8
Bölüm 3 Atama ve Girdi/Çıktı Komutları
Bölüm 3: Göstergeler BTEP 102 – Veri Yapıları ve Programlama
Aritmetik Operatörler
Diziler(Arrays).
Sunum transkripti:

Pointer (İşaretçi) Yapısal Veri Tipleri (Struct)

Pointer (İşaretleyici) Pointerler C dilinin güçlü öğeleridir. Bir pointer ana bellekte bir adres belirtir. Bir pointer, başka bir değişkenin adresini gösteren bir değişkendir. Bazı dillerde ancak assembler dili yardımıyla çözülebilecek pek çok sorun C dilinde pointerler ile kolayca çözülebilir. Ayrıca adres kullanımı çok karmaşık veri yapılarının rahatlıkla kullanilmasını sağlar.

Adres Kavramı Adres, bir değişken için bellekte ayrılan yerdir. Adres bilgileri hexadecimal sayı olarak gösterilir. Adres operatörü &. int s; printf(“%x”,&s); char 1 byte int 2 byte double 4 byte

Örnek Girilen 3 değişkenin adreslerini ekrana yazdıran programı yazınız. #include <stdio.h> #include <conio.h> int a=5; double b=6.8; char c=‘K’; void main(){ printf(“a değişkeninin değeri = %d\n”,a); printf(“b değişkeninin değeri = %f\n”,b); printf(“c değişkeninin değeri = %c\n”,c);  printf(“a değişkeninin adresi = %x\n”,&a); printf(“b değişkeninin adresi = %x\n”,&b); printf(“c değişkeninin adresi = %x\n”,&c);  getch(); }

Pointer Tanımlama Pointer tipinde degiskenin tanimlanmasinda önce degiskenin ne tip bir degeri gösterdigini tanimlamak gerekir. Pointer tipi degiskenler her zaman * isareti ile kullanilir: veritipi *d_adi; Veritipi, d_adi adli pointer’in hafizada gösterdigi adreste ne tip bir degisken oldugunu belirtir. Teknik olarak herhangi bir pointer hafizada herhangi tipte bir degiskeni gösterebilir. Ama pointerlar ile yapilan islemlerde gösterdigi veritipi gözönüne alinarak hesap yapildigindan veritipi önem kazanir.

Pointer Kullanımı Pointer işlemlerinde 2 ayrı operatör kullanılır: İçerik (indirection) operatörü * ve adres operatörü &. * : Degişkenin bir adres bilgisi tuttugunu gösterir ve o adresteki degeri verir. &: Degiskenin hafizadaki adresini gösterir.

Pointer Kullanımı char c=‘A’; char *p; p=&c; c (15000) p ‘A’ 15000

Pointer Kullanımı int x=10, y=20, z[3]; int *ptr; ptr=&x; y=*ptr; x=0; // *ptr=0; ptr=&z[0]; *ptr=541;

Pointer Kullanımı int x=10, y=20, z[3]; int *ptr; ptr=&x; y=*ptr; 10 x y z[0] z[1] z[2] ptr 1600 1602 1604 1606 1608 10 20 NULL x y z[0] z[1] z[2] ptr 1600 1602 1604 1606 1608 10 20 1600 x y z[0] z[1] z[2] ptr 1600 1602 1604 1606 1608 10 1600

Pointer Kullanımı *ptr=0; // x=0; ptr=&z[0]; *ptr=541; 20 20 10 20 x y z[0] z[1] z[2] ptr 1600 1602 1604 1606 1608 20 1600 x y z[0] z[1] z[2] ptr 1600 1602 1604 1606 1608 20 1604 x y z[0] z[1] z[2] ptr 1600 1602 1604 1606 1608 10 20 541 1604

Pointer Kullanımı int x=100; int *ptr; ptr=&x; x = x +1; // *ptr = *ptr + 1; // *ptr += 1; ++ *ptr; *ptr++;

Pointer Aritmetiği Bir pointer’a 1 eklemenin anlamı bir sonraki değer alanının (adresin) gösterilmesidir. Bu olaya “pointer aritmetiği” denir. int m[10]; ptr=&m[0]; ptr++ ; // ptr = &m[1]; &m[i] = (m + i)

Pointer - Örnek #include<stdio.h> #include<conio.h> int a, *b; void main() { clrscr(); printf("Sayi gir: "); scanf("%d", &a); b=&a; printf("b= %d\n", b); printf("b adres - &b= %d\n", &b); printf("b içerik - *p = %d\n", *b); printf("a= %d\n", a); printf(“adres a - &a= %d\n", &a); getch(); }

Pointer - Örnek #include<stdio.h> #include<conio.h> int i=1, k=2; int *p1 , *p2; main() { clrscr(); p1=&i; p2=&k; p1=p2; *p1=3; *p2=4; printf(“i= %d\n",i); printf(“p1= %d\n",*p1); getch(); }

Struct Birden fazla farklı veri tipini tek bir yapı içerisinde tutabiliriz. Örnek: int gun; int ay; int yil; struct Tarih{ int gun; int ay; int yil; }; struct Tarih bugun, dgunu; struct Tarih{ int gun; int ay; int yil; } bugun, dgunu;

Struct struct kisiselBilgi{ int tel; char adres[50]; char sehir[15]; }; struct Musteri{ char adi[15]; char soyadi[15]; struct kisiselBilgi kBilgi; struct Tarih{ int gun; int ay; int yil; }; struct nufusBilgi{ char*ad, *soyad, *dog_yeri; struct Tarih dog_tarih; } eleman; eleman.ad = “Ozlem”; eleman.soyad = “Aktaş”; eleman.dog_tarih.gun=...; eleman.dog_tarih.ay=...; eleman.dog_tarih.yil=...;

Örnekler 1- Kullanıcıdan bugünün tarihini gün, ay ve yıl olarak alan , kaydeden ve ekrana yazan program. 2- Kullanıcıdan 5 musteri bilgisini alarak kaydeden, bu bilgileri düzgün şekilde ekrana yazan programı yazınız. struct Musteri{ char adi[15]; char soyadi[15]; struct kisiselBilgi{ int tel; char adres[50]; char sehir[15]; }kBilgi; };

Pointer ve Fonksiyon - Örnekler #include<stdio.h> #include<conio.h> void topla(int *a) { *a+=50; printf("%d", *a); } void main() clrscr(); int z=300; printf("Sayı :%d\n",z); topla(&z); printf(“Yeni deger= %d",z); getch();

Pointer ve Fonksiyon - Örnekler İki değişkenin değerlerinin yer değiştirmesi : swap işlemi void swap(int *a,int *b) { int t; t=*a; *a=*b; *b=t; } void main() int x,y; x=100; y=25; printf("x=%d y=%d\n",x,y); swap(&x,&y); printf("x= %d y=%d\n",x,y); getch();