Menu
Coddy logo textTech

C Hile Sayfası

Son güncelleme

Hello World ve program yapısı

Her C programı main'de başlar ve bir int döndürür.

ElementKod
Bir başlık ekle (include)#include <stdio.h>
Giriş noktasıint main(void) { ... }
Komut satırı argümanlarıylaint main(int argc, char *argv[]) { ... }
Bir satır yazdırprintf("Hello, World!\n");
Başarıyı döndürreturn 0;
Tek satırlık yorum// comment
Blok yorum/* comment */

Veri tipleri

Boyutlar platforma bağlıdır; aşağıdaki minimumlar standart tarafından garanti edilir.

TipAçıklama
intTam sayı, en az 16 bit (genellikle 32)
unsigned intNegatif olmayan tam sayı
long / long longDaha geniş tam sayılar (en az 32 / 64 bit)
float / doubleTek / çift duyarlıklı kayan nokta
charTek bayt, karakterler için de kullanılır
_Bool (<stdbool.h> ile bool)true veya false
size_tBoyutlar ve indeksler için işaretsiz tip
voidTip yok - fonksiyonlar ve generic işaretçiler için kullanılır

printf ve scanf biçim belirteçleri

Her argümanın tipiyle eşleşen yer tutucular.

BelirteçEşleştirir
%d / %iİşaretli int
%uİşaretsiz int
%ld / %lldlong / long long
%fdouble (ve printf'te float)
%.2f2 ondalık basamaklı double
%cTek char
%sDize (char *)
%pİşaretçi adresi
%xOnaltılık tabanda işaretsiz int
%zusize_t

Operatörler

OperatörAnlamı
+ - * / %Aritmetik (% tam sayı kalanı)
== !=Eşit / eşit değil
< > <= >=Karşılaştırma
&& || !Mantıksal ve / veya / değil
& | ^ ~ << >>Bit düzeyinde ve, veya, xor, değil, kaydırmalar
++ --Artırma / azaltma
+= -= *= /=Bileşik atama
cond ? a : bÜçlü koşul
sizeof(x)Bir tipin veya değişkenin bayt cinsinden boyutu

Kontrol akışı

İfadeSöz dizimi
If / elseif (x > 0) { ... } else { ... }
Else ifelse if (x == 0) { ... }
Switchswitch (n) { case 1: ...; break; default: ...; }
While döngüsüwhile (i < n) { ... }
Do-while döngüsüdo { ... } while (i < n);
For döngüsüfor (int i = 0; i < n; i++) { ... }
Break / continuebreak; bir döngüden çıkar, continue; bir sonraki yinelemeye atlar
Goto (nadir)goto label; ... label:

Fonksiyonlar

Kullanmadan önce tanımlayın ya da dosyanın başına bir prototip ekleyin.

İşlemSöz dizimi
Bir fonksiyon tanımlaint add(int a, int b) { return a + b; }
Prototip (bildirim)int add(int a, int b);
Geri dönüş değeri yokvoid greet(void) { ... }
Parametre yokint rand_seed(void) { ... }
İşaretçiyle geçir (değiştir)void inc(int *p) { (*p)++; }
Bir dizi geçirint sum(int arr[], int n) { ... }
Static (dosya yerel)static int helper(void) { ... }

İşaretçiler ve bellek

Bir işaretçi bir adres tutar. Heap belleği manuel olarak serbest bırakılmalıdır.

İşlemSöz dizimi
Bir işaretçi tanımlaint *p;
Adresini alp = &x;
Değerine eriş (oku/yaz)int y = *p; / *p = 10;
Null işaretçiint *p = NULL;
Heap'te ayırint *a = malloc(n * sizeof(int));
Ayır + sıfırlaint *a = calloc(n, sizeof(int));
Bir ayırmayı yeniden boyutlandıra = realloc(a, newSize);
Heap belleğini serbest bırakfree(a);
İşaretçi aritmetiği*(a + i), a[i] ile aynıdır

Diziler ve dizeler

C'de dizeler, \0 ile sonlandırılan char dizileridir.

İşlemSöz dizimi
Bir dizi tanımlaint nums[5];
Bir diziye ilk değer ataint nums[] = {1, 2, 3};
Bir elemana erişnums[0] = 10;
Dizi uzunluğu (stack dizileri)sizeof(nums) / sizeof(nums[0])
Dize değişmezichar s[] = "hello";
Dize uzunluğustrlen(s) (\0'ı hariç tutar)
Bir dizeyi kopyalastrcpy(dst, src);
Dizeleri karşılaştırstrcmp(a, b) == 0 eşit anlamına gelir
Dizeleri birleştirstrcat(dst, src);

Struct'lar ve yaygın stdlib

İşlemSöz dizimi
Bir struct tanımlastruct Point { int x; int y; };
Tanımla ve erişstruct Point p; p.x = 1;
İşaretçiyle erişp->x = 1; ((*p).x ile aynı)
Tip takma adıtypedef struct Point Point;
Girdi okuscanf("%d", &n);
Dizeyi int'e dönüştürint n = atoi("42");
Mutlak değer / üsabs(x) (int), <math.h>'den pow(x, y)
Bir diziyi sıralaqsort(arr, n, sizeof(int), cmp);

En çok başvurduğunuz C söz dizimi, biçim belirteçleri ve işaretçi desenleri tek sayfada. Bu C hile sayfası, C yazmak için hızlı bir başvurudur - veri tipleri, printf/scanf belirteçleri, operatörler, kontrol akışı ve insanları zorlayan işaretçi ve bellek işlemleri.

Buradaki her şey standart C'dir (C99/C11) ve gcc veya clang ile derlenir. İhtiyacınız olanı kopyalayın ya da herhangi bir kod parçasını C playground'da canlı deneyin - kurmanız gereken bir derleyici yok.

C hile sayfası SSS

Bu C hile sayfası ücretsiz mi?
Evet. Bu C hile sayfası tamamen ücretsizdir ve kayıt gerektirmez. Yer imlerinize ekleyin ve bir tipe, biçim belirtecine ya da işaretçi işlemine bakmanız gerektiğinde geri dönün.
C'de stack ile heap arasındaki fark nedir?
Stack belleği yerel değişkenleri tutar ve bir fonksiyon döndüğünde otomatik olarak serbest bırakılır - hızlıdır ama boyutu sınırlıdır. Heap belleği malloc veya calloc ile açıkça ayrılır, siz free çağırana kadar yaşar ve geçerli fonksiyondan daha uzun yaşaması gereken ya da boyutu yalnızca çalışma zamanında bilinen bellek gerektiğinde kullanılır. Heap belleğini free etmeyi unutmak bir bellek sızıntısına neden olur.
Neden scanf bir ampersand (&) gerektirir ama printf gerektirmez?
scanf değeri tekrar değişkeninize yazar, dolayısıyla değişkenin adresine ihtiyaç duyar - işte &x ona bunu verir. printf yalnızca değeri okur, bu yüzden değerin kendisini geçirirsiniz. İstisna dizelerdir: bir char dizisi zaten bir işaretçiye dönüşür, dolayısıyla & olmadan scanf("%s", name) geçirirsiniz.
C'yi çevrimiçi olarak deneyebilir miyim?
Evet. C playground'u açarak bu hile sayfasındaki herhangi bir kod parçasını tarayıcınızda derleyip çalıştırabilirsiniz - kurmanız gereken bir derleyici yok. Yapı istediğinizde, Coddy'nin ücretsiz etkileşimli C kursu sizi değişkenler ve döngülerden işaretçilere ve bellek yönetimine adım adım götürür.
Bu hile sayfası yeni başlayanlar için uygun mu?
Evet. En yaygın yapı taşlarından (tipler, printf, kontrol akışı) gelişmiş olanlara (işaretçiler, bellek, struct'lar) doğru düzenlenmiştir, böylece üstteki bölümleri ilk günden kullanabilir ve zamanla geri kalanına geçebilirsiniz.
Coddy programming languages illustration

Coddy ile C öğren

BAŞLA