30-07-2017, Saat: 12:23
Hocam ben c++ Builder'de program geliştiriyorum,componentleri ortak olması nedeniyle delphi'ye merak sardım şu aralar.Delphi'de pointerlere bakarken bir şey dikkatimi çekti ,internette de biraz araştırdım ama tatmin edici cevaplar bulamadım.Mevzu şu:
Burada standart fonksiyon gösteren pointer örneği var; ama tip tanımlanırken ,yani şu ifadede "type fact=function (x:integer):integer;" bir pointer tipi değil değişken tipi tanımlanıyor fakat kaynaklarda bunun pointer tipi tanımlanması olduğu söyleniyor.o zaman şu kodun çalışmaması lazım ama çalışıyor:
Çünkü Burada hiç pointer yok.Burdan şu sonuç mu çıkıyor pointer kullanıılmadan da değişkenlere tipini belirterek -örneğin: hesap:function (x:integer):integer;- fonksiyon ataması yapabiliriz.ben c++ mantığıyla mı düşünüyorum yoksa bunlar doğru mu ?Burayı yanlış kavramam ciddi hafıza hatalarına sebep olabilir bu yüzden bir arkdaşım beni aydınlatırsa sevinirim. Teşekkürler şimdiden.
type
fact=function (x:integer):integer;
var
Form5: TForm5;
implementation
{$R *.dfm}
function factoriel(x:integer):integer;
begin
if x<=1 then result:=1
else result:=x*factoriel(x-1);
end;
procedure TForm5.Button1Click(Sender: TObject);
var
hesap:^fact;
i:integer;
begin
hesap := @i;
hesap^:=factoriel;
ShowMessage(IntToStr(HESAP^(5)));
end;
Burada standart fonksiyon gösteren pointer örneği var; ama tip tanımlanırken ,yani şu ifadede "type fact=function (x:integer):integer;" bir pointer tipi değil değişken tipi tanımlanıyor fakat kaynaklarda bunun pointer tipi tanımlanması olduğu söyleniyor.o zaman şu kodun çalışmaması lazım ama çalışıyor:
function factoriel(x:integer):integer; begin if x<=1 then result:=1 else result:=x*factoriel(x-1); end; procedure TForm5.Button1Click(Sender: TObject); var hesap: function (x:integer):integer; i: integer; begin hesap:=factoriel; ShowMessage(IntToStr(hesap(5))); end; end.
Çünkü Burada hiç pointer yok.Burdan şu sonuç mu çıkıyor pointer kullanıılmadan da değişkenlere tipini belirterek -örneğin: hesap:function (x:integer):integer;- fonksiyon ataması yapabiliriz.ben c++ mantığıyla mı düşünüyorum yoksa bunlar doğru mu ?Burayı yanlış kavramam ciddi hafıza hatalarına sebep olabilir bu yüzden bir arkdaşım beni aydınlatırsa sevinirim. Teşekkürler şimdiden.