Używanie zmiennych poza funkcją

Odpowiedz Nowy wątek
2014-12-30 18:18
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?

Pozostało 580 znaków

2014-12-30 18:28
0

Zwróć ją.


GG: 10101100010110000100011101 (BIN)
"Nie wszystko napisane w internecie jest prawdą" - Józef Piłsudski.

Pozostało 580 znaków

2014-12-30 18:30
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.

edytowany 1x, ostatnio: Zellus, 2014-12-30 18:35
przykład drugi: modyfikujesz kopię wskaźnika - na zewnątrz nic nie zmieniasz. - spartanPAGE 2014-12-30 18:32
Jasne sorry, teraz powinno być ok - Zellus 2014-12-30 18:35

Pozostało 580 znaków

2014-12-30 18:39
0

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

Pozostało 580 znaków

2014-12-30 18:43
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ę.

Pozostało 580 znaków

2014-12-30 18:58
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;
}
edytowany 1x, ostatnio: spartanPAGE, 2014-12-30 18:58

Pozostało 580 znaków

2014-12-30 19:25
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?

Pozostało 580 znaków

2014-12-30 19:28

"wycieka"


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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