Różne wyniki dotyczące wielkości tablicy

0

Witam
Spotkałem się z dosyć dziwnym problem. Czy jest ktoś w stanie wytłumaczyć czemu wielkość tablicy zwraca przez funkcje jest inna niż jak ją liczę w main ?

int wiel(int *tab){
	return sizeof(tab)/sizeof(tab[0]);
	
	
}


int main(int argc, char *argv[]) {
	int a[] = {2,1,4,8,88,4}; 
	
	
    printf("wynik funkcji : %d \n ",wiel(a)) ;
	int n = sizeof(a)/sizeof(a[0]);	
	printf("z main : %d",n); 
	return 0;
} 
1

w funkcji obliczasz wielkość wskaźnika i dzielisz przez wielkość integera, natomiast w main masz wielkość tablicy przez wielkość integera.

0

to jak w funkcji to zmienić ?

1

Przekazać informacje o wielkości tablicy jako parametr.

0

czyli muszę tak ? nie da się wyciągnąć wielkości w samej funkcji jeśli przekaże tylko tablicę jako argument ?

0
ice25 napisał(a):

nie da się wyciągnąć wielkości w samej funkcji jeśli przekaże tylko wskaźnik na tablicę jako argument ?

Nie.

2

Nie bo wskaźnik to wskaźnik i nie ma takiej informacji. Wskaźnik to jest jedna liczba która mówi o numerze komórki pamięci, nic więcej.

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