Global Veri Tipi
Şuana kadar kullandığım veri tiplerini ana fonksiyon bloğumuz int main(void){...} içerisine yazmıştık. Ama birden fazla fonksiyon bloğumuz olmuş olsaydık, tanımladığımız değişkenler her blok tarafından tanınacak mıydı? Hayır, çünkü bu olay o veri tipinin o fonksiyon bloğunda yerel olarak tanımlanması anlamına gelir. Bütün fonksiyon blokları tarafından tanınan popüler veya programlamadaki adı ile global bir veri tipi nasıl oluşturabiliriz?
1 2 3 4 5 6 7 8 | #include <stdio.h> int a = 1; int main(){ printf("%d", a); return 0; } |
Örnek kod çok kullanışsız bir yazıma sahip olsa da konuyu anlamak için kullanacağız. Ana fonksiyonumuzun içerisinde a değişkeni tanımlanmamış olsa bile en yukarıda global olarak her fonksiyon bloğunun tanıyabileceği şekilde tanımlanmış. Eğer başka bir fonksiyon bloğu daha olsaydı o da bu değişkeni tanıyacaktı.
Farklı Kaynak veya Fonksiyonlarda Veri Tipleri
Peki biz bütün kodlarımızı tek sayfa tek dosya üzerinde mi yazacağız? Projelerimiz ilerledikçe kesinlikle farklı kaynak dosyalarını bir arada çalıştırmak zorunda kalacağız. Bunlardan biraz daha ilerde bahsedeceğiz. Burada bahsetmek istediğim, bir değişken bir kaynak dosyasında tanımlanmış ve başka bir kaynak dosyasında da değer atanmış olabilir. Bu tarz durumlara harici veri tipi (extern data type) diyoruz.
1 2 3 4 5 6 7 8 9 10 | //main.c kaynak dosyası #include <stdio.h> extern int a; int main(){ printf("%d", a); return 0; } |
1 2 3 | //other.c başka bir kaynak dosyası int a = 1; |
Örnek kod üzerinde ana değişkenimizde bir harici a değişkeni tanımlanmış Daha sonra başka bir kaynak dosyasında bu a değişkenine değer ataması yapılmış. Bu sayede ekrana değişken değeri bastırılabilmiş.
Sabit Sayıların Tanımlanması
Mesela kodumuzda tanımlayacağımız sayıların bazılarının kod içerisinde değiştirilmemesi gerekir. Bunlar kesinlikle sabit kalmalılar. Bu sabit veri tiplerini tanımlamanın bir kaç farklı yolu var. Şimdi sırasıyla bunlara bir göz atalım.
1 2 3 4 5 6 7 8 | #include <stdio.h> #define PI 3.14 int main(){ printf("%.2f", PI); return 0; } |
Örnek kod üzerinde görüldüğü gibi sabit bir sayı olan pi sayısı #define kullanılarak kalıcı olarak tanımlanmış. Dikkat etmemiz gereken yerler ise bu tanımlamada genel olarak değişken isimleri büyük harfler ile yapılır. Bir başka dikkat çeken olay ise bu tanımın sonunda noktalı virgül bulundurmayız. Peki ya birden fazla satıra sahip bir tanım nasıl yapabiliriz?
1 2 3 4 5 6 7 8 9 | #include <stdio.h> int main(){ const int pi = 3.14; pi = 5; printf("%.2f", pi); return 0; } |
Örnek kod üzerindeki ifadeler size çok yabancı gelebilir. Koşul ve fonksiyon konularını da gördükten sonra bu örnek kod daha fazla şey ifade edecek. Ama şimdilik #define tanımında birden fazla satır kullanmak için ters kesme işareti \ kullanılacağı olacak.
Kalıcı Veri Tipi Tanımlanması
Sabit sayı tanımlamanın birkaç farklı yolu olduğunu söylemiştik. Peki ya daha farklı nasıl sabit (const) sayı tanımlayabiliriz?
1 2 3 4 5 6 7 8 9 | #include <stdio.h> int main(){ const int pi = 3.14; pi = 5; printf("%.2f", pi); return 0; } |
Örnek kod üzerinde gördüğümüz gibi sabit sayılar const ifadesi ile de tanımlanabilirler. Bu nedenle program içerisinde ifade değiştirilmeye çalışsa da terminal ekranında 3.14 yazacaktır.
0 Yorumlar