zadanie z quizu na temat sizeof(const int)

0
const int x = 9;
int main(int argc, char** argv)
{
    int x[x];

    int y = sizeof(x) / sizeof(int);

    return 0;
}

dlaczego sizeof(x) == 36, a nie 4 czyli tyle co int
I czemu lokalna tablica nie zakrywa globalnej stalej ?

0
  1. sizeof jest wyrażeniem czasu kompilacji
  2. sizeof(x) powinien zwrócić 36 bo tyle bajtów ma tablica i taką wartość sizeof zwraca dla tablic
  3. sizeof na wskaźniku / tablicy zrzutowanej do wskaźnika dałby 4

Z tego co widzę to nowa deklaracja x przysłania starą. Jak spróbujesz zrobić:

cout<<::x<<" "<<x<<endl;

to zobaczysz.

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