C Değişken Tanımlayıcıları
Değişken
Tanımlayıcıları
C çeşitli kelimeleri kullanarak değişkenleri farklı şekilde
kullanma olanağı sağlar.Değişkenler bir türe ait verileri saklayan
veri deposudur.Aksi belirtilmedikçe içerikleri değiştirilebilir.
Değişkenleri tanımlamak için aşağıdaki notasyon kullanılır.
[Veri Tipi] [Değişken Adı ]
C dilinde Büyük ve küçük harfler farklı verileri temsil eder.
Char c;
Char C;
Değişkenler harflerle yada altçizgisi ( _ ) ile başlar.İçlerinde
boşluk yoktur. Değişkenlere değer atamak için = operatörü
kullanılır.Değişkenlere değer atama program içinde yapıla bildiği
gibi değer tanımlama zamanında da yapılabilir.
İnt c; c=100;
Char d; d='a'
veya
int c=100;
Char d='a';
Aynı anda birden fazla değişken tanımlanabilir, ve aynı anda birden
fazla değişkene değer
atanabilir.
İnt i,j,k;
İ=j=k=100;
AUTO değişken tanımlayıcı : C ile B dili arasında uyum
sağlamak amacı ile otomatik değişken1 bildiriminde kullanılır.Lokal
değişkendir.Otomatik değişkenler ,gerektiğine oluşturulurlar, ve
işleri bitince de silinirler. Hatırlamamız gereken bir nokta da ,
bir fonksiyon birden fazla kere çağrıldığında ,otomatik
değişkenlerin eski değerleri saklanmaz, yeni baştan değer atanmaları
gerekir.
EXTERN değişken tanımlayıcı : C' de uzun programların
derlenmesi için programlar, dosyalar halinde bölünür. Dosyalar
sonradan birleştirileceğinden ,bir dosya için geçerli değişkenlerin
diğer dosyalar içinde geçerli hale gelmesi için,dosyaların başına
diğer dosyaların global değişkenleri yazılır ve başına " . extern"
getirilir.
/* den 1.c */ /* den 2.c */
#include "stdio.h" #include "stdio.h"
int d1= 10; extern int d1;
void fonk1(void); void fonk1(void)
main( ) { {
int d2; int d2;
fonk1( ) for(d2=1; d2<=d1;d2++)
for (d2=1; d2<=d1; d2++) printf("% -4d",d2*d2);
printf("% -4d",d2,d2,d2); printf("\n");
} }
REGISTER değişken tanımlayıcı : Eğer programınızda bir
değişkeni çok sık kullanıyorsanız, bu değişkenin başına REGİSTER
yazarak programın hızını artırabiliriz .Register sahasına erişim ,
hafızaya erişimden çok daha hızlıdır,fakat programcının
kullanabileceği az sayıda register vardır. Bazı değişkenlerin
program tarafından çok kullanılacağını düşünüyorsanız , o değişkeni
"register" olarak tanımlayabilirsiniz.Bilgisayar ve derleyici
tipinize göre,bir yada birkaç değişkeni bu şekilde
tanımlayabilirsiniz.Register değişkenleri, sadece tamsayı ve
karakter tipi değişkenleri ile kullanılabilir. Sadece lokal ve
fonksiyon parametrelerinde kullanılır.
#include "stdio.h"
#include "time.h"
main( )
{
int d1,d3; register int d2;
clock d4,d5;
d4=clock();
for (d3=0; d3<10; d3++)
for (d1=0; d1<32000; d1++)
d5=clock();
printf("İlk döngü süresi : %ld \n", d5-d4);
d4=clock();
for (d3=0; d3<10; d3++)
for (d2=0; d2<32000; d2++)
d5=clock;
printf("İkinci döngü süresi : %ld \n",d5-d4);
}
STATIC Tanımlayıcısı :Normal olarak, içinde lokal değişken
tanımlanan fonksiyonu her çağırdığınızda, önceki değeri
silinir.Ancak, bir fonksiyon içinde statik lokal bir değişken
tanımladığınızda , fonksiyonu her çağırdığınızda önceki değeri
korur. Değişkeni tanımlarken başına "static" sözcüğünü koyarak , o
değişken yada değişkenler , fonksiyonun tekrar tekrar çağırılmasında
, eski değerlerini tutarlar. Aynı sözcüğü bir global değişkenin
başına koyarak ,
o değişkenin sadece o kütük içindeki fonksiyonlara tanımlı olmasını
sağlayabiliriz.
#include "stdio.h"
void fonk1(void)
void fonk2(void)
main( )
{
int d1;
for (d1=0; d1<10; d1++)
fonk1( ); printf("\n");
for (d1=0; d1<10; d1++)
fonk2( );
}
void fonk1( void )
{
int d1=0;
printf("%d",++d1);
}
void fonk2 (void)
{
static int d1=0;
printf("%d",++d1);
}
/* den 1.c */ /* den 2.c */
#include "stdio.h" int d1=20;
void fonk1(void); void fonk2(void)
void fonk2(void); {
static int d1=10; for (d1; d1>0; d1--)
main(){ printf("%d",d1);
int d1; }
fonk1();
printf("\n");
fonk2( );
}
void fonk1(void)
{
for (d1; d1<0; d1--)
printf("%d",d1);
}
Her iki dosyada da d1 adlı birer global değişken
tanımlanmıştır,fakat den 1.c dosyasındaki d1değişkeni scatic olarak
tanımlandığından, den 2.c dosyasındaki d1 değişkeni ile karışmaz.
CONST ve VOLATİLE Değişken Tanımlayıcı : Eğer değişken
bildiriminin başına const ifadesini getirirseniz, program
değişkeninin değerini hiçbir şekilde değiştiremez.Eğer bir değişken
bildiriminin başına volatile yazarsanız ,bu değişkenin değerini
programın herhangi bir yerinde değiştire biliriz.
#include "stdio.h"
main( )
{
int d1=1;
for(d1; d1<=10; d1++)
printf("%d",d1);
}
/*Aşağıdaki program derlenmez, çünkü d1 değişkeni değişmez */
#include "stdio.h"
main( )
{
const int d1=1;
for (d1; d1<=10; d1++);
printf("%d",d1);
}
SABİTLER
Sabitler,program içinde kullanılan ve değişmeyen değerlerdir. C
dilinde 10'luk sayı sistemi yerine 8'lik veya 16'lık sayı sistemi
kullanabiliriz. 8'lik sayı
sistemine OCTAL , 16 'lık sayı sisteminde HEXADECIMAL sayı sistemi
denir. Octal bir sabit '0' rakamı ile, hexadecımal bir sabit ise
'0x' ile başlar.
EA /*hex*/ (10'luk sayı sisteminde 234)
93 /*octal*/ (10'luk sayı sisteminde 147)
C 'de karakter dizisi olarak tanımlanan bir veri çeşidi olmadığı
için biz karakter dizisi sabitleri tanımlayabiliriz.
Aşağıda her iki örnekte "C 'yi çok seviyorum " yazmaktadır.
#include "stdio.h" #include "stdio.h"
main( ) main( )
{ {
printf("C'yi çok seviyorum "); printf( " %s %s %s " , " C'yi " , "
çok " , " seviyorum " );
} }
Veri Çeşitlerini Geçici Olarak Değiştirmek
1Bazen bir değişkenin veri çeşidi geçici olarak
değiştirilebilir. Bunun için TYPE CAST özelliğini kullanabiliriz.
#include "stdio.h"
main( )
{
double d1;
d1=345.718;
printf("%f",d1);
printf(" %f , (int )d1 );
}
Programda veri değiştirme TYPE CAST metodu ile Double bir değer ,
Int bir değere çevrilir.
İŞLEMCİLER
İLİŞKİSEL İŞLEMCİ MANTIKSAL İŞLEMCİ ARİTMETİK İŞLEMCİLER
> Büyüktür && And * Çarpma
>= Büyük eşit II Or / Bölme
< Küçük ! Not % Kalan
<= Küçük eşit + Toplama
== Eşit - Çıkarma
!= Eşit değil
|