c-sorun

Programmergirl
05-06-2008, 00:00   |  #1  
OP Yeni Üye
Teşekkür Sayısı: 0
34 mesaj
Kayıt Tarihi:Kayıt: May 2008

yeni=(Agac *)malloc(sizeof(Agac));  
Agac struct yapsında tanımlanmış bi değer(int float gibi bişey oldu yani)
Burda Neden (Agac *) şeklinde kullanılıyor bunla ne ifade edilmeye çalışılıo pointer  olduğumu?
en kısa zamanda cvplarnızı bekliorum lütfeeennn..

_Neo_
05-06-2008, 23:34   |  #2  
_Neo_ avatarı
Yıllanmış Üye
Teşekkür Sayısı: 0
806 mesaj
Kayıt Tarihi:Kayıt: Haz 2007

struct data{

int number
};
typedef struct data agac;
typedef  agac *yeni;
   
boyle birşey olmalı
bu (agac*)'a cast denir her program için kullanılmaz;ancak bazı programlar hata verir."Return  from malloc" malloc'dan dönen ne olduğunu agac cinsinden bir pointera atanacagını gostermek için kullanılır yeni agac yani struct data cinsinden bir pointerdır.(agac struct data yerine tanımlanmıstır).

Son Düzenleme: _Neo_ ~ 05 Haziran 2008 23:36
kemalemre
27-06-2008, 13:25   |  #3  
Taze Üye
Teşekkür Sayısı: 0
16 mesaj
Kayıt Tarihi:Kayıt: Kas 2006

Bu konu üstünde biraz düşündüm.Normalde (Agac*)yazmaya gerek yok ama bazı derleyiciler DevC gibi malloc(sizeof(agac)) ı kabul etmiyor hata veriyor. Bu yüzden hocamız bize yeni=(Agac *)malloc(sizeof(Agac));  şeklinde yazmamız gerektiğini söylemişti ve pek sorgulamamıştık nedenini. (Agac*) ayırdığımız adresin tipini gösteriyor olabilir. Mesela benim hafızadada açacağım alan belliyse
yeni=(int *)malloc(sizeof(4));
Bu şekilde tanımlanıyordu. Tamsayı bir değer için hafızadan yer ayırmış olduk. Eğer Agac adlı bir struct ımız varsa Agacın içindeki değişkenlerin boyutu kadar hafızadan yer ayrılıyordu. inş sorunu cevaplamışımdır biraz karıştı :) ,Yanlışım varsa düzeltiniz.