Aktywne Wpisy

adzioq +522
Sikorski: 8 lat pisu nie zrobilo nic z reparacjami, bo nie da sie nic zrobic PRAWNIE z reparacjami i zaden rzad nie dostanie pieniedzy
Stanowski: no dobrze, ale co wy zrobiliscie przez 1,5 roku i co zrobicie?
XD Stanowski to mem
#kanalzero
Stanowski: no dobrze, ale co wy zrobiliscie przez 1,5 roku i co zrobicie?
XD Stanowski to mem
#kanalzero

#kanalzero Macie swego męża stanu- nie da sie odzyskać reparacji, nie da sie odzyskac dziel sztuki, złota i kosztownosci ale bedzie pomnik xD





Tworzę sobie dynamiczną tablice unsigned long long:
unsigned long long* tab = new usigned long long[n]gdzie n jest intem przekazanym w parametrze. Potem przekazuję tablicę gdzie indziej i tam chcę sobie na szybko od nowa obliczyć jej wielkość korzystając z:
int n = sizeof(tab) / sizeof(unsigned long long)lecz zawsze otrzymuję tu liczbę 1, nieważne jakiej wielkości stworzyłem tablicę.
Co jest nie tak? Coś pewnie głupiego robię źle, ale jeszcze nie wiem co.
#cpp #naukaprogramowania
Komentarz usunięty przez autora Wpisu
tab to 0 element tej tablicy, który de fakto jest typu ULL więc dzielisz x/x = 1
std::vectorzamiast wskaźnika na pierwszy element.Tak nie masz tam nigdzie żadnej zmiennej o typie tablicowym, typ tablicowy w C++ ma tylko stałą długość.
sizeofw C++ daje tylko i wyłącznie stałą wartość na podstawie typu, oznacza to, że nie dowiesz się jakiej wielkości jest polimorficzny obiekt, tak samo, jak ile elementów zostało stworzonych poprzeznew[].tab, musisz też przekazaćn.Aby lepiej to zrozumieć możesz też pobawić się tym kodem:
int n = 4;unsigned long long *tab1 = new unsigned long long[n];
unsigned long long* tabjako parametr, więc w samej funkcjisizeof(tab) == sizeof(void*) == 8, niezaleźnie od tego czy podasz tab1 czy tab2 z mojego przykładu.Lepiej to widać w tym kawałku kodu:
#include
void f(unsigned