jak znaleźć rozmiaru tablicy stałoprzecinkowego CJak do wielkości całkowitej tablicy
dowolny sposób dostępne bez przechodzenia przez cały szereg, gdy, aby sprawdzić rozmiar tablicy.
jak znaleźć rozmiaru tablicy stałoprzecinkowego CJak do wielkości całkowitej tablicy
dowolny sposób dostępne bez przechodzenia przez cały szereg, gdy, aby sprawdzić rozmiar tablicy.
Jeśli tablica jest globalną, statyczną lub automatyczną zmienną (int array[10];
), wówczas działa sizeof(array)/sizeof(array[0])
.
Jeśli jest to tablica przydzielona dynamicznie (int* array = malloc(sizeof(int)*10);
) lub przekazana jako argument funkcji (void f(int array[])
), to nie można znaleźć jej rozmiaru w czasie wykonywania. Będziesz musiał przechowywać gdzieś rozmiar.
Należy pamiętać, że sizeof(array)/sizeof(array[0])
kompiluje się dobrze nawet w przypadku drugiego przypadku, ale w trybie cichym wygeneruje zły wynik.
Być może wspomnieć i wskazać pytanie wyjaśniające rozkład matrycy? Często zadawane pytania –
Dla nowicjuszy C++ przybywających na to pytanie C: [Wszystko, co kiedykolwiek chciałeś wiedzieć o tablicach w C++] (http://stackoverflow.com/q/4810664/140719) w jednym FAQ. – sbi
http://stackoverflow.com/questions/5493281/c-sizeof-a-passed-array – delive
int len=sizeof(array)/sizeof(int);
Powinien działać.
Nie - w wielu przypadkach to * nie * zadziała. –
Działa, jednak 'site_t len = sizeof (array)/sizeof (array [0]);' jest nieco lepszy (tzn. Nadal działa, gdy typ danych z elementów tablicy został zmieniony –
@Grzegorz: Pokaż nam, jak to działa dla tej tablicy: 'void f (int array []) {site_t len = sizeof (tablica)/sizeof (array [0]);}' – sbi
Jeśli tablica jest statyczny przypisany:
size_t size = sizeof(arr)/sizeof(int);
jeśli tablica jest dynamicznej przydzielona (sterty)
int *arr = malloc(sizeof(int) * size);
gdzie zmienna wielkość jest wymiarem ARR.
_msize(array)
w systemie Windows lub Linux w malloc_usable_size(array)
powinien pracować dla dynamicznej tablicy
Oba znajdują się w malloc.h i oba zwracają size_t
Są przydatne, ale niezbyt przenośne ... – glglgl
Jak wdrożyć tę tablicę? Zasadniczo albo znasz rozmiar tablicy w O (1) (znany rozmiar), O (N) (zakończone zerem), albo niemożliwy. – kennytm
Zwykle tablice są tworzone jako zmienne statyczne i podczas ich tworzenia trzeba było uzyskać pewną długość. – Jack
@Jack: Dlaczego tablice "zwykle" są statyczne? – sbi