2014-10-18 14 views
7

G'day!Przekazywanie tablicy jako argument funkcji z funkcji, która przyjmuje ją jako argument w C

Jeśli mam funkcję, która pobiera tablicę ints jako argument, a następnie z poziomu tej funkcji, wysyła tę samą tablicę do innej funkcji, czy nadal będzie w stanie edytować wartości tablicy i mieć je popełnione na poziomie głównym, a nie na poziomie funkcji?

tj

int 
main(int argc, char *argv[]) { 
    int A[50]; 
    functionB(A); 
} 

gdzie funkcja B wygląda następująco:

void functionB(int A[]) { 
    functionC(A); 
} 

i funkcja C oznacza taki, który faktycznie mutuje się Wartości w [].

Chciałbyś zobaczyć zmienioną tablicę lub oryginalny A []?

Dzięki!

+2

Tak, oryginalna tablica zostanie zmodyfikowany. –

+1

Co się stało, gdy próbowałeś? –

Odpowiedz

10

Tablica rozpada się na wskaźnik. Więc zmodyfikuje oryginalną tablicę.

Sprawdź to

void functionC(int A[]) { 
    A[0] = 1; 
    A[1] = 2; 
} 

void functionB(int A[]) { 
    functionC(A); 
} 

int 
main(int argc, char *argv[]) { 
    int A[2]={5,5}; 

    printf("Before call: %d %d\n",A[0],A[1]); 
    functionB(A); 
    printf("After call : %d %d\n",A[0],A[1]); 
}