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
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
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.