CodeBlanks Logo Icon CodeBlanks

ctypes types

c_int, c_char_p ile C türlerini öğrenirsin.

c_int ve c_char_p

ctypes, C türlerini Python'da temsil eden sınıflar sağlar. c_int C int'ini, c_char_p C char* işaretçisini temsil eder.

Bir C türü oluşturduktan sonra .value özniteliğiyle Python değerine erişirsin. c_int(42).value 42 verir. c_char_p(b"kutu").value b"kutu" bayt dizesini verir; .decode() ile metne çevirirsin. Bu türler, fonksiyon argümanlarını ve dönüş değerlerini doğru biçimde eşleştirmek için gereklidir.

Diğer C türleri

ctypes birçok C türü sağlar: c_double (double), c_long (long), c_size_t (size_t), c_void_p (void*).

Her türün .value özniteliği hem okuma hem yazma içindir. a = c_int(5); a.value = 10 ile değeri değiştirebilirsin. Türler, argtypes ve restype tanımlarken sınıf adlarıyla kullanılır. Doğru türü seçmek, veri kaybını ve çöküşleri önler.

Uygulama C türleri ile değer sakla

import ctypes ile modülü içe aktar. ctypes.c_int(42) ile bir C int oluştur. ctypes.c_char_p(b"kutu") ile bir C dize işaretçisi oluştur. Her ikisinin .value'şunu yazdır; ikinciyi .decode() ile metne çevir.

Başlangıç kodu

main.py
# C türleri oluştur
# değerleri yazdır

Örnek çözüm

main.py
import ctypes

a = ctypes.c_int(42)
b = ctypes.c_char_p(b"kutu")
print(a.value)
print(b.value.decode())

Beklenen çıktı

42
kutu

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 c_int tanımını tamamla

Soru
a = ctypes.____(42)
Cevap
a = ctypes.c_int(42)

Açıklama: c_int(42) bir C int nesnesi oluşturur.

2 Tür kavramlarını eşleştir

Kavram Anlamı
c_int C int
c_char_p char* işaretçi
.value Python değeri
.decode() Bayttan metne

3 c_char_p(b'x').value ne döndürür?

main.py
import ctypes
s = ctypes.c_char_p(b'kutu')
print(s.value)
  • Bir hata
  • Bir sayı
  • Bir metin dizesi (str)
  • Bir bayt dizesi (bytes) Doğru cevap

Açıklama: bir bayt dizesi. c_char_p.value bayt döndürür; metin için decode gerekir.

Uzman bölümündeki tüm dersler