Tablica przekazywana do funkcji

0

Mam pytanie jak zadeklaruje tablice w funkcji main() char tab[3] i sprawdzę jej rozmiar sizeof(tab) to mam 3 bajty czyli tyle ile ma być.
Jeśli tą tablice podam do funkcji funkcja(char* tab) i później zrobie sizeof(tab) to mam 4 bajty. Moje pytanie brzmi dlaczego??

0

Dostajesz rozmiar wskaźnika, który w systemach 32-bitowych ma 4 bajty. Prawdopodobnie powinieneś użyć strlen albo przekazać do funkcji również rozmiar tej tablicy.

0

Bo pokazuje Ci rozmiar wskaźnika. W C(++) nie da się tak sprawdzić rozmiaru tablicy.

0

sizeof() zwraca ci rozmiar char* (czyli 4 bajty).

 
void funkcja(char* tablica)
{
     int dlugosc = strlen(tablica); // to obliczy dlugosc ciągu znaków (do znaku '\0', czyli może to nie być rozmiar całej tablicy.)
}

Możesz też przekazać jak wspomniano wcześniej dlugosc tablicy do samej funkcji.

 
void funkcja(char* tablica, int dlugosc)
{
}
//dlugosc możesz sobie obliczyć przed wywołaniem funkcji

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