fonksiyona pointer adresi yollama

Başlatan z, 05 Ocak 2022, 19:20:19

z

Bir fonksiyona array adresi yollamak istiyorum ama beceremedim.

Yapmak istedigim

Global degiskenlerim

a: array [0..10] of real;
b: array [0..10] of real;
c: array [0..10] of real;

yazmak istedigim fonksiyon x[0]=x[1] islemini yapacak;

Fonksiyonu mesela a arrayi icin cagiracagim bunun icin fonksiyona a[0] adresi yollayacagim.

Bu is nasil yapilir?

Fonksiyonu ve nasil cagrilacagini yazabilirmisiniz.



Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

#1
Fonksiyona adres parametresini global degisken uzerinden bildirirsem sorum yok ama fonksiyona parametre yollamaya calisirsam bir turlu kabul ettiremiyorum.
Ayrica pointer degerini inc ve dec ile artirip azaltmak da hosuma gitmiyor.

Global degiskenle su sekilde cozdum.

a:array [0..10] of  real;

p:^real;

function Tasi():real;
{
    inc(p);            // Bu isleme gerek olmadan da yapabilmem lazim
    result:=p^;
    dec(p);            // Bu isleme gerek olmadan da yapabilmem lazim
    p^:=result;
}

Cagirirken;

        p:=@a;
        Tasi(); // p[0]=p[1]

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

Bu sekilde oldu ama inc ve dec'dan da kurtulmam lazim.

function Tasi(a: pointer):real;
var p: ^real;
begin
         p:=a;
         inc(p);
         result:=p^;
         dec(p);
         p^:=result;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
        a[1]:=2.8;
        Tasi(@Ia);
end;
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

power20

#3
Edit


z

Cok basit sekilde hallettim. Pointera falan gerek kalmadi

function Tasi(var n: array of real):real;
begin
         n[0]:=n[1];
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
        a[1]:=2.8;
        Tasi(a);
end;
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

power20

#6
Evet, fonksiyon parametresi önüne var kelimesi ekleyince Fonksiyon dışındaki değişken kastedilmiş oluyor. Bu sayede global değişken veya başka fonksiyon içindeki değişken kullanılabiliyor