@ Джим, просто чтобы уточнить. Я знаю, что 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[]
который делает недействительным операцию присваивания. неa,b
в обоих случаях означают одно и то же? Благодарю.
Изменить 1:
Когда я делаю это в функцииfoo
присваиваетb's
расположение начального элемента вa
, Итак, если подумать, что заставило разработчиков языка не делать то же самое вmain()
, Хочу узнать причину.