ctypes types
- Python kursu
- Uzman
- Ders 20/47
- 5 dk
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
# C türleri oluştur
# değerleri yazdırÖrnek çözüm
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
a = ctypes.____(42)
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?
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.