Witam, spotkałem się z czymś czego nie potrafię zrozumieć i potrzebuje wyjaśnienia skąd biorą się te wartości i dlaczego przy tworzeniu tablicy o szerokości zmiennej zamiast wartości wyświetla ich znacznie mniej
0
3
to jest tak złe że aż bolą oczy.
NULL to pointer i nie powinno się tego tak porównywać (z bool) ale skoro już porównujesz to NULL zwraca zawsze 0 co gwarantuje standard ( w rzeczywistości to nie musi leżeć na zero ).
Także część śmieci które leżą w twojej tablicy jest wyzerowana stąd takie wyniki.
1
W pierwszych dwóch przykładach tablice są niezainicjalizowane - zawierają śmieci.
Choć kod prawdopodobnie nie zawiera “undefined behavior”, wynik jest przypadkowy, i VLA nie ma tu nic do rzeczy - ot, przypadek, że wartość 0 znalazła się w innym miejscu.
Trzeci kod jest formalnie prawidłowy, ale jest w złym stylu: skoro wartości są typu bool
, powinieneś użyć false
a nie NULL
jako wartości zerowej.