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