Pobieranie wielkości tablicy char - dlaczego mi to nie działa?!

0

Witam,
wiem że pytanie banalne, ale nie mogę zrozumieć dlaczego nie działa mi funkcja sizeof.
Dokładnie chcę odczytać jak wielka jest moja tablica char.
Próbowałem tak:

 int ilosc_elementow_tablicy = sizeof(ciagznakow) / sizeof(int);

Wychodzi 1.
Próbowałem tak:

 int ilosc = sizeof(ciagznakow);

Wychodzi 4.
To jest zawartość char'a:

f 1 4 3 2

Dlaczego ani ten sposób ani tamten nie wskazuje mi poprawnego wyniku?
Pozdrawiam.

1

Bo ciagznakow to najprawdopodobniej nie tablica znaków, a wskaźnik na pierwszy element. Wskaźnik na x86 ma 4 bajty, int również ma 4 bajty (dlaczego w ogóle sprawdzasz int zamiast char?). Wskaźnik to wskaźnik, kompilator tak naprawdę nie wie (a raczej: nie może tobie powiedzieć) co jest dalej.
Użyj funkcji strlen.

1

Dziel przez sizeof(char) skoro twoja tablica składa się z charów.

0

Sorry za odkop ale mam pytanie:
jak odczytać wielkość tablicy trójwymiarowej?

0

Jeśli jest dynamiczna to się nie da, jak jest statyczna to identycznie jak 1 wymiarowej.

0

Tworzysz klasę, umieszczasz w niej tablicę i wielkość, a następnie odczytujesz wielkość

0

Na gcc można się zawsze odwołać do pamięci trochę przed wskaźnikiem, gdzie malloc przechowuje ilość pamięci zaalokowanej. Później, jak komuś nie będzie ten kod działał powiedzmy pod Visual C++ to powiedz, że to jest zepsuty kompilator na zepsutej platformie i nie masz zamiaru tego wspierać ;).

Na serio, to umieść najlepiej tablicę w klasie z rozmiarem i sprawdzaniem czy nie odwołujesz się poza tablicę (parę assertów może Ci zaoszczędzić długie godziny spędzone na debugowaniu).

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