📓
Temel C Programlama
  • Temel C Programlama Dersleri -1- Giriş
  • Temel C Programlama -2- Bilgisayar Mimarisi Temelleri
  • Temel C Programlama -3- Bilgisayar Yazılımı Temelleri
  • Temel C Programlama -4- Programlama Dilleri
  • Temel C Programlama -5- Makine Dili, Assembly Dili ve Yüksek Seviye Diller
  • Temel C Programlama -6- C Diline Giriş
  • Temel C Programlama -7- C Geliştirme Aşamaları ve Derleyici Kurulumu
  • Temel C Programlama -8- İlk Program
  • Temel C Programlama -9- Basit Program Örnekleri – 1
  • Temel C Programlama -10- Basit Program Örnekleri – 2
  • Temel C Programlama -11- Aritmetik Operatörler
  • Temel C Programlama -12- C Veri ve Değişken Tipleri
  • Temel C Programlama -13- C Veri ve Değişken Tipleri – 2
  • Temel C Programlama -14- Döngülere Giriş
  • Temel C Programlama -15- İlişki Operatörleri
  • Temel C Programlama -16- For Döngüsü
  • Temel C Programlama -17- While Döngüsü
  • Temel C Programlama -18- do while Döngüsü
  • Temel C Programlama -19- Kararlar ve If Karar Yapısı
  • Temel C Programlama -20- Else ve Else If Yapıları
  • Temel C Programlama -21- Switch Karar Yapısı, break ve continue
  • Temel C Programlama -22- Mantık Operatörleri, Birleşik Operatörler ve Operatör Önceliği
  • Temel C Programlama -23- Fonksiyonlara Giriş
  • Temel C Programlama -24- Basit Fonksiyonlar
  • Temel C Programlama -25- Değer Alan Fonksiyonlar, Sabitler, Önek ve Sonekler
  • Temel C Programlama -26- Fonksiyondan Değer Döndürmek
  • Temel C Programlama -27- Diğer Fonksiyon Konuları ve Recursive Fonksiyonlar
  • Temel C Programlama -28- Diziler
  • Temel C Programlama -29- Diziler -2-
  • Temel C Programlama -30- İşaretçilere Giriş
  • Temel C Programlama -31- İşaretçiler
  • Temel C Programlama -32- Çift İşaretçiler
  • Temel C Programlama -33- İşaretçileri Referans Olarak Aktarmak
  • Temel C Programlama -34- İşaretçi Aritmetiği
  • Temel C Programlama -35- İşaretçiler ve Diziler
  • Temel C Programlama -36- İşaretçi ve Değer Sabitleri
  • Temel C Programlama -37- Fonksiyon İşaretçileri
  • Temel C Programlama -38- Karakterler ve Karakter Dizilerine Giriş
  • Temel C Programlama -39- Karakter Dizileri (String)
  • Temel C Programlama -40- ctype.h Başlık Dosyası ile Karakter İşlemleri
  • Temel C Programlama -41- string.h Başlık Dosyası ile Karakter Dizisi İşlemleri
  • Temel C Programlama -42- stdlib.h ve stdio.h Başlık Dosyaları ile Karakter Dizisi İşlemleri
  • Temel C Programlama -43- Formatlı Giriş ve Çıkış
  • Temel C Programlama -44- Yapılar
  • Temel C Programlama -45- Yapı Uygulamaları ,typedef ve union (birlikler)
  • Temel C Programlama -46- Bit Manipülasyonu ve Bitwise Operatörleri
  • Temel C Programlama -47- Bit Bazlı Uygulamalar (Set, Reset, Toggle)
  • Temel C Programlama -48- Bit Alanları ve Enümeratörler
  • Temel C Programlama -49- Dosya İşlemleri ve fopen() fonksiyonu
  • Temel C Programlama -50- fprintf() ve fclose() ile En Basit Dosya Uygulaması
  • Temel C Programlama -51- Dosya İşaretçisi ve feof() Fonksiyonu
  • Temel C Programlama -52- Dosya Uygulamaları
  • Temel C Programlama -53- Ön İşlemci Komutları (Preprocessor)
  • Temel C Programlama -54- Sonsöz
Powered by GitBook
On this page

Was this helpful?

Temel C Programlama -36- İşaretçi ve Değer Sabitleri

Değişkenleri size anlattığımız zaman const anahtar kelimesi ile bir değişkeni bir değişken sabiti haline getirebileceğimizi söylemiştik. Aynı özelliği işaretçiler için de kullanmamız mümkündür. Yalnız işaretçi boyutundan baktığımız zaman işaretçilerin kendisi olduğu gibi işaret ettiği eleman da söz konusudur. O halde karşımıza dört ayrı ihtimal çıkmaktadır.

  • Sabit olmayan işaretçi ve sabit olmayan değişken

  • Sabit işaretçi ve sabit olmayan değer

  • Sabit olmayan işaretçi ve sabit değer

  • Sabit işaretçi ve sabit değer

Biz daha önceki başlıklarda sabit olmayan işaretçi ve sabit olmayan değerler ile program yazmıştık. O yüzden bunu atlayarak bu konuda sadece sabit değişken ve işaretçileri kullanarak program yazacağız. Tahmin edeceğiniz üzere sabit işaretçi tek bir değer alır ve program boyunca o değer asla değişmez. İşaretçi olduğu için tek bir adres değeri alır ve program boyunca o adres değerini gösterir. Sabit olmayan işaretçi sabit bir değeri işaret edebildiği gibi başka bir değeri de gösterebilir. Yalnız sabit değere geldiği zaman “*” operatörü ile bu sabit değişkenin değerine erişebilse de bu değer üzerinde herhangi bir değişiklik yapamaz. Sabit işaretçi ve sabit değer beraber kullanıldığı zaman ne işaretçinin adresi üzerinde ne de değişken üzerinde bir işlem yapılabilir.

Şimdi değişken bir işaretçi ile sabit bir veri örneğini yapalım.

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

void karakterYazdir (const char *stringP);
int main(int argc, char *argv[]) {
	char string[] = "Bu bir karakter dizisidir!";
	puts("Karakter Dizimiz:");
	karakterYazdir ( string );
	
	return 0;
}

void karakterYazdir (const char *stringP)
{
	while (*stringP != '\0')
	{
	printf("%c", *stringP);
	stringP++;	
	}	
	printf("\n");
}

Programı çalıştırdığımızda ekran görüntüsü şu şekilde olacaktır.

Burada sabit veri olarak belirttiğimiz karakter dizisi main() fonksiyonu içerisinde sabit değildir. Ama ne zaman yazdırma fonksiyonuna gelirse o zaman void karakterYazdir (const char *stringP) diyerek sabit hale gelmektedir. Burada sabit verinin olması işaretçinin asla veri üzerinde değişiklik yapamayacağı anlamına gelir. Bu verinin değiştirilmeden güvenle ekrana yazılmasını sağlar. Aynı zamanda bizim burada işaretçimiz sabit olmadığı için stringP++; komutu ile işaretçinin değerleri ile oynayabilir ve bütün diziyi yazdırabiliriz.

Sabit İşaretçi ve Değişken Değer

Sabit işaretçi ve değişken işaret edilen değer örneğinde her zaman işaretçi aynı hafıza bölümünü göstermektedir. Aynı hafıza bölümünü göstermesine karşın içindeki değeri istediği gibi değiştirebilir. Buna en iyi örnek olarak dizi adlarını verebiliriz. Dizi adları değişmeyen birer işaretçidir ve her zaman dizinin ilk elemanını işaret etmektedir. Biz sabit bir işaretçi tanımlıyorsak muhakkak değerini ilk tanımlamada vermek zorundayız. Örnek bir sabit işaretçi tanımlaması şu şekilde olabilir.

int * const ptr = &degisken;

Sabit İşaretçi ve Sabit Değer

Bu örnekte en az erişim imkanı verilmiş olur. Sabit işaretçi aynı hafıza birimini işaret ettiği gibi sabit veri de program akışı boyunca değiştirilemez. Dizi değişkenleri fonksiyonlara argüman olarak aktarılırken bu halde aktarılır. Yani aktarılan diziden sadece okuma yapılır ve herhangi bir değişiklik yapılamaz. Sabit işaretçi ve sabit değeri şu şekilde tanımlayabiliriz.

const int * const ptr = &degisken;

Buraya kadar işaretçilere dair fonksiyon işaretçilerinden başka konumuz kalmadı. Bir sonraki konuda onu ele aldıktan sonra işaretçiler konusunu bitireceğiz. Gördüğünüz gibi hiç de zor değilmiş, değil mi?

PreviousTemel C Programlama -35- İşaretçiler ve DizilerNextTemel C Programlama -37- Fonksiyon İşaretçileri

Last updated 5 years ago

Was this helpful?