Parametry referencyjne (var) z Pascala w języku C

0

Witam. Mój ogólny problem: jak najlepiej przenieść parametry referencyjne (var) z Pascala do języka C?

Mam na przykład taką procedurę:

type
	tablica = array[1..1000] of integer;
procedure ZnajdzWszystkieWazneElementy(var tab : tablica; var elem : integer; var elem2 : integer);
begin
	elem := ZnajdzJakisWaznyElement(tab);
	elem2 := ZnajdzJakisInnyWaznyElement(tab);
end;

I teraz spróbuję ją przenieść do C:

void znajdz_wszystkie_wazne_elementy(int * tablica, int * elem, int * elem2) {
	elem = znajdz_jakis_wazny_element(tab);
	elem2 = znajdz_jakis_inny_wazny_element(tab);
}

Zakładam oczywiście, że funkcja "znajdz_jakis_wazny_element" zwraca wskaźnik do tego elementu.

Widzę główny problem: jeśli zmienię wyszukany element tablicy, to i zmienna globalna elem się zmieni. A nie mogę przecież stworzyć nowej zmiennej w funkcji, ponieważ zniknie razem z końcem wykonania funkcji. Więc teraz dwa pytania szczegółowe:

  • Czy to jest jedyne podejście?
  • Czy to jest najlepsze podejście?
1
#include <stdio.h>
#include <stdlib.h>

void foo(int *tab, int *element, int *element1);
int main()
{
    int tab[2] = {2, 3};
    int ele, ele1;
    foo(tab, &ele, &ele1);

    return 0;
}
void foo(int *tab, int *element, int *element1){
    *element = tab[0]; 
    *element1 = tab[1];
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1