Но если мы поговорим о 2-D массивах (int prr[100][100]
), то prr[0]
, тогда он напечатает адрес первого массива в 0-й строке
Это верно для некоторыхэкстент и в некоторых контекстах.
prr[0]
- это объект типа int [100]
- массив из 100 int
с.
В некоторых контекстах prr[0]
затухает доуказатель на его первый элемент, однако это не всегда так.
sizeof(prr[0])
будет 100 * sizeof(int)
.
&prr[0]
будет иметь тип int (*)[100)
, указатель на массив 100 int
s ", а не int**
.
Напротив,
В основном я хочу спросить, почему мы объявляем vector <int> arr[100]
, поскольку arr[0]
также будет хранить адрес массива в0-й массив мы должны объявить как vector <int*> arr[100]
для объявления массива векторов
Нет, arr[0]
не будет хранить адрес массива в 0-м массиве.arr[0]
имеет тип std::vector<int>
.Все просто.В отличие от массива, объект типа std::vector<int>
не распадается на указатель на первый элемент объекта в любом контексте.Следовательно, любые дальнейшие сравнения с int*
не имеют смысла.