C Programlama

Ek Bilgiler

C Programlamaya Giriş

Bu bölüme başlamadan önce, C programlama dilinin gelişim tarihine kısaca bir göz atalım. Daha sonra, bir C programının temel yapısını oluşturan elemanları, en basit program yapısından itibaren basamak basamak ilerleyerek incelemeye çalışacağız.

C Programlama Dilinin Gelişimi

C dilinin temelleri Martin Richards tarafından geliştirilen BCPL adlı dil ile atılmıştır. Sonra, BCPL dilinden esinlenerek, Ken Thompson B adlı dili oluşturmuştur. B dili, C dilinin oluşturulmasında bir basamak olarak kullanılmıştır. Daha sonra ise, C dili Brian Kernighan ve Dennis Ritchie tarafından geliştirilmiştir.

C dili içinde kullanılan standartlar 1983 yılına kadar, yine Brian Kernighan ve Dennis Ritchie tarafından yazılan "The C Programming Language" adlı kitapta belirlendiği şekilde uygulanmıştır. Zamanla daha yaygın bir şekilde kullanılmaya başlayan C için gereksinim duyulan yeni standartları belirlemek amacıyla 1983 yılında toplanan bir komite, ANSI C standartları adı verilen standartları oluşturmuştur. Burada kullanılan ANSI kelimesi "American National Standart Institute" kelimelerinin kısaltılmış şeklidir. 1983 yılından itibaren, C programlama dili için bütün dünyada ANSI C standartları uygulanmaya başlamıştır.

Günümüzde C dilinin bu sürümü "ANSI C" veya "C89" adı ile anılır.

ANSI C standartlarının belirlenmesinden sonra, piyasaya sürülen bütün C derleyicileri bu özelliği sağlayacak şekilde hazırlanmıştır. 1990 yılında, ANSI C ISO (International Organization for Standardization) tarafından, birkaç küçük değişiklik yapılarak, ISO/IEC 9899:1990 adıyla yeniden uyarlandı. Bu sürüm "C90" adıyla anılmaktadır.

2000 yılında ise, ANSI ISO/IEC 9899:1990 standardını yeniden uyarladı. "C99" adı verilen bu standart C programlama dilinin günümüzde kullanılmakta olan en son standart şeklidir.

Assembler yoluyla Assembly dilinde yazılmış kodları makine kodlarına çevirerek kullanabiliriz. Ancak, Assembly dilinde kod yazarak programlama yapmak zor olduğu ve uzun bir uğraş gerektirdiği için, günümüzde kullanılmakta olan yüksek seviyeli diller (Basic, Fortran, Pascal gibi) oluşturulmuştur. Yüksek seviyeli diller program yapma işlemini daha kolay ve hızlı bir hale getirmiştir. Ancak, bu kez yapılan programların etkinliği azalmıştır. C dili, Assembly dilinin gücü ile yüksek seviyeli dillerin hızlı ve kolay programlama yapabilme özelliğini birleştirerek, kullanıcılar için oldukça pratik bir ortam sağlamıştır. Bu nedenle, C dili her geçen gün biraz daha rağbet görmüştür.

Neden C Programlama Dili

Orta seviyeli bir programlama dili olarak kabul edilen C ile bilgisayar için işletim sistemi, derleyici ve aygıt sürücüsü (device driver) de dahil olmak üzere hayalinizin ulaşabileceği tüm programları yazabilirsiniz.

Yapısal bir dil olduğundan düzenli ve anlaşılır bir kod yazımına olanak sağlar.

Çok yaygın bir kullanıcı kitlesine, dolayısıyla desteğe sahiptir. Ücretsiz olarak sunulan derleyicilere ve geliştirme ortamlarına rahatlıkla elde edebilirsiniz.

Internet üzerinden rahatlıkla ulaşarak bilgi ve destek alabileceğiniz sürekli aktif haber grupları ve forumlar vardır.

C dilinde yazdığınız bir program, Assembly dilinin aksine, bütün bilgisayarlarda çalışacak şekilde hazırlanır.

C dili öğrendiğinizde nesneye dayalı (object oriented) ve görsel nesneye dayalı (visual object oriented) programlama dilleri daha rahat öğrenebilirsiniz. Bu dillerde bir sorun yaşadığınızda çözmekte zorlanmazsınız. Eğer direk olarak görsel programlama dilleri öğrenirseniz kodlama konusunda sıkıntılar yaşayabilirsiniz. Bu dillere örnek olarak C++, C++ Builder, Visual C++, Java, Javascript, Php gösterilebilir.

Derleyici (Compiler) ve Yorumlayıcı (Interpreter) Programlama Dilleri

Pratik uygulamalara geçmeden önce, son olarak derleyici ve yorumlayıcı programlama dilleri arasındaki farkı kısaca gözden geçirelim.

Bazı programlama dillerinde yazılan programlar (kaynak kodları) birazdan anlatılacak olan derleme ve bağlama (link) işlemleri sonrasında makina kodları (ikili sayı sistem kodu) na çevrilir ve .exe uzantılı bir dosya elde edilir. Elde edilen bu dosya hangi bilgisayarda olursa olsun ek bir program yükleme gereksinimi olmadan çalıştırılabilir. C, derleyici programlama dilleri olarak adlandırılan bu grubun içinde yer almaktadır.

Diğer grup ise yorumlayıcı programlama dilleri olarak adlandırılmaktadır. Bu dillerde yazılan programların çalışabilmeleri için kaynak kodlarının bir yorumlayıcı tarafından yorumlanması gerektiğinden, programın çalışacağı her bilgisayara ayrıca yorumlayıcı bir program yüklenmelidir. Yorumlayıcı programın kaynak kodunu satır satır makine koduna çevirerek çalıştırır. Java programlama dili bu gruba örnek olarak gösterilebilir.

Derleyici programı bir kez derlendikten sonra makina kodlarına çevrildiğinden, yorumlayıcı program ise her çalıştığında yorumlanması gerektiğinden, derleyici program daha hızlı çalışır.

Çalışma Sisteminin Hazırlanması

C programlama dili ile program yazmak ve çalıştırmak için bir önceki bölümde bahsi geçen entegre geliştirme ortamlarından birine ihtiyacımız olacaktır. Aşağıdaki adreste gösterilen IDE'lerden birini bilgisayarınıza kurabilirsiniz:

C ve C++ Entegre Geliştirme Ortamları

Burada yer alan bütün örnekleri açık kaynak kodlu Code::Blocks IDE (Entegre Geliştirme Ortamı) ile derleyip çalıştıracağız. Bu programı aşağıdaki adresten indirip kurabilirsiniz:

Code::Blocks C++ IDE

Bir C Programının Oluşturulması, Derlenmesi ve Çalıştırılması

Sistemi hazır hale getirdikten sonra, çalışan .exe uzantılı bir program elde edebilmemiz için, aşağıdaki üç safhalı işlemi gerçekleştirmemiz gerekir:

1. Programın yazılması
2. Programın derlenmesi
3. Programın kütüphane dosyaları ile birleştirilmesi

Bu safhaları sıra ile ele almadan önce, yeri gelmişken çalışan .exe uzantılı bir program ifadesini kısaca açıklamaya çalışalım:

İşletim sistemi, uzantısı .EXE, .COM ve .BAT olan dosyaları, komut satırında iken adını yazıp ENTER tuşuna bastığınızda veya Windows Gezgini benzeri bir ara yüz üzerinde çift tıkladığınızda çalıştırır. Diğer uzantılı dosyalara ise çift tıkladığınızda ilgili program yoluyla açar.

Yukarıdaki üç safhayı gerçekleştirdiğimizde .EXE uzantılı çalışan bir dosya elde edebiliriz.

İlk safhayı gerçekleştirmek için, bilgisayarına yüklediğiniz IDE'nin içinde bulunan metin düzenleyicisini veya dilerseniz farklı bir metin düzenleyicisi kullanarak programınızın kodlarını bir dosyaya yazmanız gerekir. Bu dosya ilk bakışta normal bir metin dosyası ile aynı nitelikleri taşır. Bir C programı içeren bu dosyaya "Kaynak Dosya" adı verilir. Bu dosyayı .c uzantısı ile kaydetmeniz gerekir. Çünkü C programlama dilinde bütün kaynak dosyaları .c uzantılıdır. Eğer IDE'nin içindeki metin düzenleyici ile programınızı yazarsanız, uzantı vermeseniz de otomatik olarak programınıza .c uzantısını verilir. Artık, elimizde program kodları içeren bir dosya var.

İkinci safha programınızın derlenme safhasıdır. Kaynak dosya IDE derleyicisi (Compiler)ile derlendiğinde, programımız makine kodlarına çevrilerek .OBJ uzantılı ikinci bir dosya oluşturulur. Bu dosya da henüz çalıştırılmaya hazır değildir.

Üçüncü ve son safha elde edilen .obj uzantılı dosyanın kütüphane dosyaları ile birleştirilmesi safhasıdır. Bu safhada, IDE içinde bulunan bağlayıcı (Linker) kullanılarak .OBJ uzantılı dosya ile kütüphane fonksiyonlarının bulunduğu dosyaları birleştirilerek .EXE uzantılı üçüncü bir dosya oluşturur. Bu dosyanın adını komut satırında yazarak veya direkt olarak derleyicinizin içinden çalıştırabilirsiniz. Bağlayıcı, derleyici tarafından object dosyasına çevrilen dosya veya dosyalar arasında bir bağ oluşturarak çalıştırılabilen tek bir .exe dosya elde eder.

Günümüzde yaygın olarak kullanılan IDE'lerde, derleme ve bağlama işlemleri sadece tek bir komutla ("Build") gerçekleştirilmektedir.

Sonuç olarak, yazılan tek bir program için IDE üç farklı dosya oluşturur. Eğer "deneme.c" adlı bir kaynak dosya oluşturur ve gerekli işlemleri tamamlarsak, aşağıda gösterilen 3 dosyayı elde ederiz:

deneme.c
deneme.obj
deneme.exe

Kaynak dosya yazılırken herhangi bir hata yazım hatası yapılırsa, program derlendiğinde derleyici hata mesajı verir. Bu hata mesajları genellikle C dilinin kurallarına aykırı olan yazım hatalarıdır. Sonunda noktalı virgül (;) olmayan bir işlem satırı, fonksiyonların başlangıcını ve sonunu gösteren ({}) işaretlerinin eksikliği, komutların hatalı olarak yazılması ve tırnak işareti (") ile kapatılmamış bir karakter dizisi bu hatalara örnek olarak gösterilebilir.

Bazen derleyici programınızı derler, ancak derleme işleminden sonra size uyarı mesajları verir. Bu mesajlar programınızın çalışmayacağını göstermez, ancak programcı olarak bu mesajları inceleyerek çalışma anında bir sorun yaratıp yaratmayacağı konusunda karara varmanızda fayda vardır.

Program bazen hatasız olarak derlenir, ancak bağlayıcı hatası verebilir. Bununda değişik sebepleri olabilir. Ancak bu hatalarda kolaylıkla düzeltilebilir.

En zor olarak tespit edilen hatalar, derleme ve bağlama işlemi normal olarak sonuçlandıktan sonra, elde edilen .exe dosya çalıştırılmak istendiğinde meydana gelen ve çalışma zamanı hataları (runtime error) olarak adlandırılan hatalardır.

Burada hatırlanması gereken en önemli konu C dilinde çalışma zamanı hataları kontrolü olmadığıdır. Bu hataların kontrolü programlayıcı tarafından yapılmalıdır.

Yeri geldiğinde bütün bu kavramlara daha ayrıntılı olarak yer verilecektir.

İlk C Programı

İlk programı yazmaya başlamadan önce, C dilinin en çok dikkat edilmesi gereken özelliklerinden biri olan, büyük ve küçük harflere farklı işlem yapma özelliğinden bahsetmekte fayda görüyorum:

C dilinde "Fonksiyon" ve "fonksiyon" kelimeleri tamamen farklı kabul edilir.

* C dilinde büyük ve küçük harfler tamamen farklı işlem görür.

Çalışmalarımıza devam etmeden önce şu iki önemli konuya da dikkat çekmekte fayda görüyorum:

1. Bir konuyu ele alırken henüz incelenmemiş bir konuya ait bazı içerikleri kullanabiliriz. O an sadece örneği anlamanız için kısa olarak anlatılan konuyu anlamakta zorlanırsanız endişe etmeyin. Çünkü yeri geldiğinde bilmediğiniz veya anlamadığınız bu konu ileride daha ayrıntılı olarak ele alınacaktır.

2. Öğrendiğiniz hiçbir konuyu veya komutu ezberlemeniz gerekmemektedir. Sürekli olarak kullanacağınızdan ihtiyaç duyduğunuz bilgiler ve komutlar otomatik olarak siz farkında olmadan belleğinize yerleşecektir. Ayrıca bir konunun nerede ve ne şekilde kullanıldığını bilmek sizin için yeterli olacaktır.

Şimdi, en basit şekilde oluşturulmuş ilk C programımızı incelemeye çalışalım:

#include <stdio.h>

main()
{
  printf("C Programlama Dili");
}

Yukarıdaki programı derleyip çalıştırdığınız zaman ekrana aşağıdaki cümleyi yazar:

C Programlama Dili

İlk C programımızı çalıştırmış olduk. Şimdi, programı satır satır incelemeye çalışalım.

Bir C programı çalışmaya başladığında, ilk önce program içinde mutlaka bulunması gereken main() adlı fonksiyonu arar, bulur ve ilk işlem satırından itibaren çalıştırmaya başlar. Dikkat ederseniz burada "fonksiyon" ve "işlem satırı" olmak üzere iki yeni ifade kullandık.

İşlem satırlarının fonksiyonların bir elemanı olduğu düşüncesiyle, dilerseniz önce işlem satırı kavramı üzerinde duralım:

printf("C Programlama Dili");

Yukarıda verilen satır bir işlem satırıdır ve C'nin bir defada yerine getirmesi gereken işlem olarak tanımlanabilir. C'de bütün işlem satırları noktalı virgül işareti ile sona erer. Yani işlem satırı sonu (;) işareti ile belirlenir. İşlem satırı, dil bilgisinde görülen satır kavramından farklı olarak, aynı satıra birden fazla yazılabilir.

#include <stdio.h>

main()
{
  printf("C Programlama Dili "); printf("ve fonksiyonlar");
}

Yukarıdaki programı derleyip çalıştırdığınız zaman tek satırda yer alan iki adet işlem satırını çalıştırarak aşağıdaki cümleyi ekrana yazar:

C Programlama Dili ve fonksiyonlar

* C bir satırda (;) işaretine rastladığında, bu işareti işlem satırı sonu olarak algılar.

Yukarıdaki iki adet işlem satırını tek satırda yazmakla aşağıda gösterildiği şekilde iki satır halinde yazmak arasında fark yoktur:

#include <stdio.h>

main()
{
  printf("C Programlama Dili ");
  printf("ve fonksiyonlar");
}

Fonksiyonları tanımlanma şekilleri açısından ikiye ayırabiliriz:

  • Kütüphane fonksiyonları
  • Kullanıcı tanımlı fonksiyonlar

Programlarımızda printf() gibi hazır kütüphane fonksiyonlarını kullanmak istediğimizde, yukarıdaki örneklerde görüldüğü gibi sadece adını yazarak çağırmamız yeterlidir. Ancak kullanıcı tanımlı fonksiyonlar kullanmak istediğimizde, fonksiyonu çağırmadan önce, program içinde tanımlamamız gerekir. Şimdi, bir program içinde kullanıcı tanımlı bir fonksiyonu oluşturmanın yolunu incelemeye çalışalım. Fonksiyon ise C programlama dilinde aşağıdaki gibi genel bir yapı ile ifade edilir:

fonksiyon_adı()
{
  işlem satırı;
       .
       .
  işlem satırı;
}

Fonksiyon tanımlamalarında fonksiyon adı sizin tanımlayabileceğiniz herhangi bir ifade olabilir. Ancak, fonksiyon adı harflerden, rakamlardan ve (_) işaretinden oluşan bir karakter dizisi olmalıdır. Fonksiyonda bir veya birden fazla işlem satırı bulunabilir.

Bir fonksiyonu yukarıda gösterildiği şekilde tanımladıktan sonra tıpkı kütüphane fonksiyonları gibi çağırabiliriz. Bir fonksiyon main() fonksiyonu veya diğer bir fonksiyon içinden adı kullanılarak çağrılabilir:

fonksiyon_adı();

Bir fonksiyona çağrı yapmak için işlem satırına önce fonksiyon adı ve hemen peşinden de parantez açma ve kapama işaretleri yazılır. İşlem satırı ise doğal olarak noktalı virgül ile sonlandırılır:

fonk1();

Programın farklı yerlerinde aynı işlem satırlarını tekrar etmeniz gerektiğinde, bu işlem satırlarını bir fonksiyon içine yerleştirirseniz, her defasında aynı işlem satırlarını yazmak yerine sadece fonksiyonu çağırarak sonuca ulaşmanızı sağlar.

Bir fonksiyon adı kullanılarak çağrıldığında, fonksiyonun içinde yer alan bütün işlem satırları çağrıldığı işlem satırında yazılmış gibi işlem yapılır.

C yapısal bir programlama dilidir. Bu özelliğinden dolayı program yazılırken kolaylıkla anlaşılır ve kontrolü basit bir yapı elde edilir. Bu sistemi oluşturmak için C programlarının temelini oluşturan fonksiyonlar kullanılır. Bir C programında bir veya daha fazla fonksiyon bulunabilir. Ancak, bir programda kaç tane fonksiyon bulunursa bulunsun, bu fonksiyonlardan bir tanesi mutlaka main() adlı fonksiyon olmalıdır.

İlerideki bölümlerde fonksiyonlarla ilgili bilgiler üzerinde daha ayrıntılı olarak durmaya çalışacağız.

Yukarıda çalıştırdığımız program içinde yer alan main() fonksiyonu da diğer fonksiyonların özelliklerini içerir.

Program çalışmaya başladığında, direkt olarak main() fonksiyonuna giriş yaptığından ve ilk işlem satırından itibaren işlemleri gerçekleştirdiğinden bahsetmiştik. İşlem satırları açma yaylı parantezi ({) ile kapama yaylı parantezi (}) arasında yer alır:

main()
{
  işlem satırı:
       .
       .
  işlem satırı;
}

Programınızda başlangıç işaretini ({) görür görmez ilk işlem satırından başlayarak, bütün işlem satırlarının gerektirdiği işlemleri yerine getirir. (}) işaretini görür görmez programın çalışmasını sona erdirir.

Şimdi, programımızın en üst satırında yer alan ifadeyi incelemeye çalışalım:

#include <stdio.h>

Bu satırın C dilinde kullanılan genel tanımlaması aşağıdaki şekildedir:

#include <başlık-dosya-adı"

Dikkat ederseniz işlem satırı değil satır ifadesini kullanıyorum. Çünkü, satırın sonunda (;) işareti yer almamaktadır. Bu satır bir önişlemci direktifidir.

Önişlemci direktifleri C programlarında yer alırlar ancak işlem satırı olarak işlem görmezler. Programın derlenme safhasından önce işlem görürler. Başka bir deyişle, derleme başlamadan önişlemci direktifinin gerektirdiği işlemler tamamlanmış olur. Daima (#) işaretiyle başlarlar. Konu, ilgili bölümde detaylı olarak ele alınacaktır.

Programımızda, kullanılan "include" önişlemci direktifi, stdio.h adlı başlık dosyasını program içine dahil etmemiz gerektiğini bildirir. Bu sayede, derleme işlemi başladığında, stdio.h uzantılı dosyanın içeriği program içinde yazılmış gibi işlem görür.

Peki, biz neden stdio.h başlık dosyasını programımıza dahil ediyoruz? Tek cümle ile cevap verecek olursak, printf() kütüphane dosyasını programımızda kullanabilmek için.

Karşılaştığımız başlık dosyası ve kütüphane dosyaları kavramlarını incelemeye çalışalım:

Günümüzde kullanılmakta olan C derleyicileri ve IDE'leri hazırlanırken, ANSI C standartlarına göre tanımlanmış olan bazı temel fonksiyonlar ile çok sık kullanılabileceği tahmin edilen ve günün ihtiyaçlarına göre miktarı değişebilen, IDE üreticileri tarafından hazırlanan fonksiyonları "Kütüphane Dosyaları" adı verilen ve .LIB uzantılı dosyalara yerleştirilir. Bu dosyalar derleyicinin belirli bir alt dizinine (genelde lib adlı) yerleştirilir. Kütüphane dosyaları içinde yer alan fonksiyonlara "Kütüphane Fonksiyonları" adı verilir.

ANSI C standartlarına göre sınırlı sayıda temel fonksiyon için tanımlanan kütüphane dosyalarına "Standart C Kütüphanesi" adı verilir. Standart C kütüphanesine ek olarak derleyici ve IDE üreticileri kendi ürettikleri özel fonksiyonların bulunduğu kütüphaneler oluşturarak kullanıcıların hizmetine sunmaktadırlar.

Kütüphane fonksiyonlarının programlarda kullanılabilmesi için, fonksiyonlar hakkındaki başlık bilgileri, C derleyicisinin bir alt dizininde (genelde include adlı) bulunan ve uzantısı .H olan dosyalara yerleştirilmiştir. Bu dosyalara "Başlık Dosyaları" adı verilir.

Şimdi sıra kütüphane fonksiyonlarının başlık dosyaları yolu ile program içinde nasıl kullanılacağını incelemeye geldi. Siz bir başlık dosyasını programınıza dahil ettiğinizde, o başlık dosyasını bilgilerini içerdiği kütüphane fonksiyonu, sizin programınız içinde yazılmış gibi kullanıma hazır olacaktır. Başlık dosyalarının programlara dahil edilmesi için ise #include önişlemci direktifi kullanılır. #include direktifi, önişlemcinin adı verilen başlık dosyasını okumasını ve bu dosyada geçen kütüphane fonksiyonlarını kullanım için hazır bulundurmasını sağlar.

Bir program içinde bir veya daha fazla başlık dosyası tanımlamak mümkündür. Aşağıdaki satırlar 3 farklı başlık dosyasını programınıza dahil eder:

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

Programın başına yukarıdaki satırları yerleştirdiğinizde, program stdio.h, conio.h ve stdlib.h başlık dosyalarında bilgileri bulunan bütün kütüphane fonksiyonlarını kullanabilecektir.

Tekrar programımıza dönecek olursak, #include <stdio.h> satırını ekleyerek stdio.h başlık dosyasında başlık bilgileri yer alan printf() fonksiyonunu kullanma olanağı elde etmiş oluyoruz.

Şimdi, örneğimizde yer alan işlem satır sayısını artırarak aşağıdaki hale getirelim:

#include <stdio.h>

main()
{
  printf("C Programlama Dili ");
  printf("temeli ");
  printf("ve fonksiyonlar");
}

Yukarıdaki programı derleyip çalıştırdığınız zaman ekrana aşağıdaki cümleyi yazar:

C Programlama Dili temeli ve fonksiyonlar

Artık, program içinde main() fonksiyonu dışında fonksiyon kullanma zamanı geldi.

Tekrar hatırlatmakta fayda görüyorum, C dilinde main() fonksiyonu dışında fonksiyon kullanmak zorunluluğu yoktur.

Yukarıdaki programın aynısını fonksiyon kullanarak tekrar yazacak olursak:

#include <stdio.h>

main()
{
  fonk1();
}

fonk1()
{
  printf("C Programlama Dili ");
  printf("temeli ");
  printf("ve fonksiyonlar");
}

Dikkat ederseniz, main() fonksiyonu içinde yer alan üç adet işlem satırını aldık ve fonk1() adlı fonksiyonun içine yerleştirdik. Sonra, main() fonksiyonu içinde sadece fonk1(); işlem satırını kullanarak fonksiyon içindeki işlemleri gerçekleştirdik.

Bu örnek üzerinde fonksiyonların sağladığı kolaylık tam olarak görülmese de fonksiyonların çalışma prensibinin anlaşılmasını sağlayacağı düşüncesindeyim.

Bir C Programının Temel Yapısı

Üzerinde çalıştığımız bilgiler ve örneklerden sonra bir C programının temel yapısını aşağıdaki şekilde gösterebiliriz:

 
#include <başlık-dosya-adı"
.
.
.
#include <başlık-dosya-adı"

main()
{
  işlem satırı;
  .
  .
  işlem satırı;
}

fonk1()
{
  işlem satırı;
  .
  .
  işlem satırı;
}

fonk2()
{
  işlem satırı;
  .
  .
  işlem satırı;
}  

Şekilde görüldüğü gibi, bir C programının temelini fonksiyonlar oluşturmaktadır. Bir programda en az bir main() fonksiyonu bulunmalıdır.

C Dilinde Kullanılan Anahtar Kelimeler

C dilinde farklı amaçlarla kullanılmak üzere tahsis edilmiş olan kelimelere anahtar kelimeler denir. Bu kelimeleri değişken, veri ve döngü tanımlamaları ve benzeri işlemlerde kullanabilirsiniz. ANSI standartlarına göre C'de kullanılmakta olan toplam 32 adet anahtar kelime vardır. Bu kelimeler değişken ve fonksiyon adı olarak kullanılamaz.

                        C  ANAHTAR  KELİMELERİ
------------------------------------------------------------------------
   auto     continue   enum      if        short     switch     union
   break    default    extern    int       signed    typedef    unsigned
   case     do         float     long      sizeof    void
   char     double     for       register  static    volatile
   const    else       goto      return    struct    while

C derleyicilerinden bazıları yukarıdaki tabloya ek olarak bazı anahtar kelimeler daha kullanmaktadırlar. Bu kelimelerden en çok kullanılanlar aşağıda gösterilmektedir:

  asm          _cs          _ds          _es
  _ss          cdecl        far          huge
  interrupt    near         pascal
C'de bütün anahtar kelimeler küçük harfle yazılmalıdır. Aksi takdirde derleyiciler tarafından tanınmazlar.

Yorum Satırları

Kaynak dosyaların içine bazen programın daha kolay anlaşılması için açıklayıcı satırlar eklenebilir. Bu satırlara "Yorum Satırı" adı verilir. Yorum satırlarının yazılan programla herhangi bir ilgisi yoktur. Sadece, programı inceleyenlerin, programı daha kolay bir şekilde anlamalarına yardımcı olur. Ayrıca, geçici olarak iptal etmek istediğiniz işlem satırlarını silmeden devre dışı bırakmak için de yorum satırı kavramını kullanabilirsiniz. Yorum satırlarına derleyici tarafından kesinlikle herhangi bir işlem yapılmaz. Yorum satırları sanki hiç yokmuş gibi işlem görür.

Yorum satırı /* işaretleri ile başlar ve */ işaretleri ile sona erer. Yorum satırı kullanılan bir programı incelemeye çalışalım:

#include <stdio.h>

main()
{
  int id1;            /* Değişken bildirimi */

  id1 = 27;           /* Değişkene değer atanması */
  printf("%d", id1);  /* Değişken değerinin ekrana yazılması */
}

Yukarıdaki örnekte, program aşağıdaki satırı ekrana yazar:

27

Program içinde tek satırlık yorumlar yer almaktadır. Ancak, bu satırlar programın çalışmasını herhangi bir şekilde etkilemez.

Bir satırdan fazla yer tutan yorumları kullanabilirsiniz. Bir satırdan fazla yer tutan yorum ise aşağıdaki şekilde yapılmaktadır:

/* Burada yer alan yorum satırları
   programın çalışmasını etkilemez! */

C'de, yorumlarınızı programın herhangi bir yerinde yapabilirsiniz. Bu konuda herhangi bir sınırlama yoktur.

C'de, birbiri içinde yer alan yorum satırları kullanamazsınız. Bu şekilde oluşturduğunuz bir dosyayı derlemek istediğinizde derleyiciniz bir hata mesajı vererek derleme işlemine son verir:

/* Bu yorum satırı içindeki /* diğer yorum satırı */ hataya yol açar! */

Yukarıda gösterilen yorum satırında, turuncu renkle gösterilen değerler (/* diğer yorum satırı */) programın hata vermesine neden olur.