@ Джим, просто чтобы уточнить. Я знаю, что int a [] будет размещаться в стеке, тогда как int const * a [] = new int [2] будет в куче ... это важная концепция в c ++ ... я просто пытался упростить причину. все равно думает

льте мне объяснить на примере -

#include <iostream>

void foo( int a[2], int b[2] ) // I understand that, compiler doesn't bother about the
                               // array index and converts them to int *a, int *b
{
    a = b ;  // At this point, how ever assignment operation is valid.

}

int main()
{
    int a[] = { 1,2 };
    int b[] = { 3,4 };

    foo( a, b );

    a = b; // Why is this invalid here.

    return 0;
}

Это потому, что массив распадается на указатель при передаче в функциюfoo(..), операция присваивания возможна. И вmainэто потому, что они имеют типint[]&nbsp;который делает недействительным операцию присваивания. неa,b&nbsp;в обоих случаях означают одно и то же? Благодарю.

Изменить 1:

Когда я делаю это в функцииfooприсваиваетb's&nbsp;расположение начального элемента вa, Итак, если подумать, что заставило разработчиков языка не делать то же самое вmain(), Хочу узнать причину.