Внезапно осознал, что любое определение массива (например int mas[7];) порождает в памяти не такую структуру:
    mas
    ┏━┳━┳━┳━┳━┳━┳━┓
    ┗━┻━┻━┻━┻━┻━┻━┛
а такую:
    mas
    ┏━┓
    ┗━┛
     |
     |
     ∨
    ┏━┳━┳━┳━┳━┳━┳━┓
    ┗━┻━┻━┻━┻━┻━┻━┛
И так всегда. То есть, при определении массива выделяется место в памяти и под элементы, и под указатель на сам массив. Всегда! Офигеть...
В KnR, конечно, написано что имя массива - указатель на первый элемент, но вот этой схемки нет, и объяснения, как выделяется место, тоже нет.
UPD: я тупой, все что выше - неверно.
Перемещено mono из talks






