jak przekazać wynik jednej funkcji do drugiej

0

Witam
Na wstepnie wspomne że jestem początkujący więc proszę o wyrozumiałość.
Na przykładowe dwie funkcje.

pubic int funkcja1 (int id)
{
return id;
}

public void funkcja ( int a, int b)
{
int zmiena = id //jak to zmienić
//coś tam robi
}

Funcja funkcja1 zwaraca wartość int. Mój problem polega na tym jak zrobić żeby parametr id z funkcja1 był odczytywany w funkcja2.
Nie wiem za bardzo jak to ugryś i w google ciężko cokolwiek mi znaleć na ten temat.

0

Po 1 - jeśli takich rzeczy nie możesz znaleźć w googlach, to lepiej najpierw naucz się szukać, a potem bierz za programowanie - i ja nie żartuję.
po 2 - po co przekazujesz zmienną do funkcji i od razu ją zwracasz? To w ogóle nie ma sensu. Co chcesz w ten sposób osiągnąć?

0

Po 1: nie mogę gogle znaleć bo nie wiem pod jakim hasłem tego szukać
Po 2: fukcja2 może mieć tylko przyjmować dwa parametry a musze wykorzystać tam parametr z pierwszej fukcji
Czy jest możliwość przesłania go do fukcji2??

0

Możesz wynik działania funkcji 1 przechowywać jako zmienną globalną/pole klasy i później jej używać w funkcji 2.
@Blood: 2. przeczytaj pierwszy post jeszcze raz: "przykładowe" jest kluczowym słowem

0

Rozumiem, że te funkcje są przykładowe, ale nie ma sensu podawać jakiejś zmiennej jako argument do funkcji i od razu ją zwracać, bo przecież i tak w ten sposób nic się nie zyska.

0

a oprócz zmiennej globalnej można w jakiś sposób ten parametr przekazać??

0

Skoro nie masz tego w klasie i nie możesz dołożyć więcej argumentów funkcji to nie. Ta zmienna po wyjściu z funkcji1 przestaje istnieć.

0
szymonpw napisał(a)

Witam
Na wstepnie wspomne że jestem początkujący więc proszę o wyrozumiałość.
Na przykładowe dwie funkcje.

pubic int funkcja1 (int id)
{
return id;
}

public void funkcja ( int a, int b)
{
int zmiena = id //jak to zmienić
//coś tam robi
}

Funcja funkcja1 zwaraca wartość int. Mój problem polega na tym jak zrobić żeby parametr id z funkcja1 był odczytywany w funkcja2.
Nie wiem za bardzo jak to ugryś i w google ciężko cokolwiek mi znaleć na ten temat.

Hę???

int fun1(int id) {
	// tutaj robisz coś z id np.
	return id;
};

void fun2(int a, int b, int id) {
	int zmienna = id;
	// coś tam robisz
};

// ...

int main(void) {
	fun2(1, 2, fun1(3));
};

Jeśli natomiast chcesz zmodyfikować w fun2() wartość, którą zwróciła fun1(), to musisz ją sobie zapisać w jakieś zmiennej i przekazać poprzez wskaźnik:

// ...
void fun2(int a, int b, int *id) {
	int zmienna = *id;  // zmieniasz tylko kopię lokalną, lub:
	int *zmienna = id;  // zmieniasz id z main(), to jest _wskaźnik_!

	// rozsądniej jednak będzie się odwoływać bezpośrednio:
	fprintf(stdout, "%d\n", *id);
	*id = 8;
};

int main(void) {
	int id;

	id = fun1(3);
	fun2(1, 2, &id);
};

lub zapisać ją sobie w zmiennej globalnej (odradzam, chyba że naprawdę bardzo musisz lub bardzo bardzo bardzo chcesz).
Aha, przy czymś takim:

fun2(1, 2, fun1(3));

obsługa błędów z fun1() jest upierdliwa, a często niemożliwa. Jeśli chcesz tego uniknąć, musisz wywoływać funkcje oddzielnie i przerzucać się zmienną tymczasową.
Czy o to Ci chodziło?

0

Prawdopodobnie właśnie o to mu chodziło bo szukałem czegoś podobnego, natrafiłem na post Kumashiro i mój podobny problem został tym świetnym, łopatologicznie tłumaczącym postem rozwiązany! Dziękuję!

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