type casting

Bu konuyu okuyanlar

Kömürkentli

Öğrenci
Katılım
22 Eylül 2020
Mesajlar
15
Reaksiyon puanı
3
Puanları
3
Yaş
24
ip = (int*) malloc(sizeof(int));
dinamik bir dizi tanımlamak istediğimizde bir pointer tanımlayım malloc fonksiyonunu kullanıyoruz . merak ettiğim şey bu fonksiyonun tipini neden integer pointera dönüştürüyoruz madem mallocu kullanmak için böyle bir şey yapmamız gerekiyor neden malloc fonksiyonu pointer tipinde diğil ?
 

hakaya

Asistan
Katılım
22 Temmuz 2013
Mesajlar
234
Reaksiyon puanı
109
Puanları
43
Zaten pointer döndürür. Ama ne saklamak istiyorsanız ona cast etmeniz gerekir. Siz örneğinizde "bana bir integer'lik yer ver ve ben bunu yine integer için kullanıcam" diyorsunuz. Ama isterseniz o alanı örneğin char için de kullanabilirsiniz. Siz özellikle belirtmezseniz compiler bunu bilemez. Type-safe diller böyle.
 

hakandimdik

Öğrenci
Katılım
19 Aralık 2020
Mesajlar
5
Reaksiyon puanı
2
Puanları
1
Yaş
41
ip = (int*) malloc(sizeof(int));

Bu kodda (int*) kısmını silerseniz malloc'un void* döndürdüğünü göreceksiniz. Burada heap bölgesinde bir tam sayılık yer ayırıyorsunuz ve işaretçinizin tipi de int işaretçisi.
 
Üst