Używanie zmiennych poza funkcją

0

Mam pytanie: Czy możliwy (i ewentualnie w jaki sposób) będzie dostęp do zmiennej po wykonaniu funkcji, jeśli zmienna jest zadeklarowana wewnątrz funkcji i ma przydzieloną pamięć za pomocą malloc?

0

Zwróć ją.

1

2 przykłady:

int* foo()
{
    return (int*)malloc(sizeof(int));
}
void foo(int** var)
{
    *var = (int*)malloc(sizeof(int));
}

Można również zadeklarować tą zmienną jako globalną, ale jest to brzydkie i niepolecane. W c++ mógłbyś jeszcze dać zmienną jako member klasy.

0

Dzięki wielkie. Jestem w szoku czasem odpowiedzi. :)

0

Ale chyba jednak nie do końca o to mi chodziło...
Jeszcze raz: czy jeśli zadeklaruję zmienną wewnątrz funkcji, to możliwy jest trwały przydział pamięci dla niej?
Zaznaczę jeszcze, że zwracanie nie wchodzi w rachubę.

2

Prosze bardzo

#include <stdio.h>

int foo(int x){
	static int bar = 0;
	return bar += x;
}

int main(){
	int i = 0;
	for(i; i < 10; ++i)
		printf("%d\n", foo(i));
	return 0;
}
0

A co się dzieje z pamięcią przydzieloną np. w ten sposób?

void funkcja()
	{.......
	  .......
	  .......
	  int *tab=malloc(10*sizeof(int));
	  .......
	}

Czy pamięć przydzielona mallociem wewnątrz funkcji przestaje być zarezerwowana po wyjściu z funkcji?

3

"wycieka"

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