C Programlama Değişkenler
Değişkenler, programlarımızın değiştirebileceği bir depolama alanına verilen addan başka bir şey değildir. C’deki her değişkenin, değişkenin belleğinin boyutunu ve düzenini belirleyen belirli bir türü vardır; o bellekte saklanabilecek değer aralığı; ve değişkene uygulanabilecek işlemler kümesidir.
Bir değişkenin adı harflerden, rakamlardan ve alt çizgi karakterinden oluşabilir. Değişkenin adı bir harf veya alt çizgi ile başlamalıdır. C büyük/küçük harfe duyarlı olduğundan büyük ve küçük harfler farklıdır. Önceki bölümde açıklanan temel türlere bağlı olarak, aşağıdaki temel değişken türleri olacaktır:
Sr.No. | Tür ve Açıklamalar |
---|---|
1 | char Tek bir sekizli (bir bayt). Bir tamsayı türüdür. |
2 | int Makine için en doğal tam sayı boyutu. |
3 | float Tek duyarlıklı kayan nokta değeri. |
4 | double Çift duyarlıklı kayan nokta değeri. |
5 | void Türün yokluğunu temsil eder. |
C programlama dili ayrıca Enumeration, Pointer, Array, Structure, Union, vb. gibi sonraki bölümlerde ele alacağımız diğer değişken tiplerini tanımlamaya da izin verir. Bu bölüm için sadece temel değişken tiplerini inceleyeceğiz.
C’de Değişken Tanımlama
Değişken tanımı, derleyiciye değişken için nerede ve ne kadar depolama alanı oluşturacağını söyler. Değişken tanımı, bir veri türünü belirtir ve aşağıdaki gibi bu türden bir veya daha fazla değişkenin bir listesini içerir:
type variable_list;
Burada tür , char, w_char, int, float, double, bool veya herhangi bir kullanıcı tanımlı nesne dahil geçerli bir C veri türü olmalıdır; ve değişken_listesi virgülle ayrılmış bir veya daha fazla tanımlayıcı adından oluşabilir.
int i, j, k; char c, ch; float f, devreyakan; double d;
int i, j, k; satırı i, j ve k değişkenlerini bildirir ve tanımlar; bu, derleyiciye int türünde i, j ve k adlı değişkenler oluşturmasını söyler.
Değişkenler, bildirimlerinde başlatılabilir (bir başlangıç değeri atanabilir). Başlatıcı, eşittir işaretinin ardından aşağıdaki gibi sabit bir ifadeden oluşur:
tip degisken_ismi = deger;
Bazı örnekler:
extern int d = 3, f = 5; int d = 3, f = 5; byte z = 22; char x = 'x';
Başlatıcı olmadan tanımlama için: statik depolama süresine sahip değişkenler örtük olarak NULL ile başlatılır (tüm baytlar 0 değerine sahiptir); diğer tüm değişkenlerin başlangıç değeri tanımsızdır.
C’de Değişken Bildirimi
Bir değişken bildirimi, derleyiciye, verilen tür ve ada sahip bir değişkenin bulunduğuna dair güvence sağlar, böylece derleyici, değişken hakkında tam ayrıntıya ihtiyaç duymadan derlemeye devam edebilir. Değişken tanımının anlamı yalnızca derleme sırasında vardır, derleyici programı bağlama anında gerçek değişken tanımına ihtiyaç duyar.
Değişken bildirimi, birden fazla dosya kullandığınızda kullanışlıdır ve değişkeninizi, programın bağlanması sırasında mevcut olacak dosyalardan birinde tanımlarsınız. Herhangi bir yerde bir değişken bildirmek için extern anahtar sözcüğünü kullanacaksınız. C programınızda bir değişkeni birden çok kez bildirebilmenize rağmen, bir dosyada, bir işlevde veya bir kod bloğunda yalnızca bir kez tanımlanabilir.
Hatırlatma
Bir kaynak dosya içinde tanımlanan bir değişkene ya da işleve, yalnızca tanımlandığı kaynak dosya içinde değil, projeyi oluşturan diğer kaynak dosyalarda da erişilebiliyorsa, nesne ya da işlevin dış bağlantısı “external linkage” vardır denir. Bir kaynak dosya içinde tanımlanan bir değişkene ya da işleve, yalnızca tanımlandığı kaynak dosya içinde erişilebiliyorsa, projeyi oluşturan diğer kaynak dosyalarda erişilemiyorsa, nesne ya da işlevin iç bağlantısı “internal linkage” vardır denir. extern anahtar kelimesi derleyiciye değişkenin dışarıda tanımlandığını bildirmek için kullanılan bir keyword’tür. Compiler extern keyword’unu gördüğünde değişken için alan tahsisinde bulunmaz.
Örnek
Değişkenlerin en üstte bildirildiği, ancak ana işlev içinde tanımlanıp başlatıldığı aşağıdaki örneği deneyin:
#include <stdio.h> // değişken bildirimi: extern int a, b; extern int c; extern float f; int main () { /* değişken tanımlama */ int a, b; int c; float f; /* gerçek başlatma */ a = 10; b = 20; c = a + b; printf("c'nin değeri : %d \n", c); f = 70.0/3.0; printf("f'nin değeri : %f \n", f); return 0; }
Yukarıdaki kod derlendiğinde ve çalıştırıldığında, aşağıdaki sonucu üretir:
c'nin değeri : 30
f'nin değeri : 23.333334
Aynı kavram, bildirimi sırasında bir işlev adı sağladığınız ve gerçek tanımının başka herhangi bir yerde verilebildiği işlev bildirimi için de geçerlidir.
// fonksiyonun tanımlanması int func(); int main() { // fonksiyonun çağrılması int i = func(); } // fonksiyonu tanımı int func() { return 0; }
C’de Lvalue ve Rvalue Değerleri
C’de iki tür ifade vardır:
Lvalue: Bir bellek konumuna atıfta bulunan ifadelere “lvalue” ifadeleri denir. Bir değer, bir atamanın sol veya sağ tarafı olarak görünebilir.
Rvalue: “rvalue” terimi, bellekteki bazı adreslerde saklanan bir veri değerini ifade eder. Değer, kendisine atanmış bir değere sahip olamayacak bir ifadedir; bu, bir değerin bir atamanın sağ tarafında görünebileceği ancak sol tarafında görünmeyebileceği anlamına gelir.
Değişkenler değerlerdir ve bu nedenle bir atamanın sol tarafında görünebilirler. Sayısal değişmezler değerlerdir ve bu nedenle atanamazlar ve sol tarafta görünemezler. Aşağıdaki geçerli ve geçersiz ifadelere bir göz atın:
int g = 20; // geçerli tanımlama 10 = 20; // geçersiz tanımlama, derleme sırasında sorunlar yaratabilir
Bir sonraki yazımızda, Sabitler ve Değişmezler konusunu inceleyeceğiz.
[sc name=”cprogramlama” ][/sc]Yorum yapma özelliği, forum tarafından gelen istek sebebiyle kapatılmıştır. Lütfen tartışmalar ve sorularınız için topluluk forumumuza katılın.