указатели и многомерные массивы [дубликаты]
Possible Duplicate:
How do I use arrays in C++?
Is 2d array a double pointer?
Two dimensional arrays and pointers
Я знаю, что это очень простой вопрос, но никакие поиски в Google не прояснили это для меня. Вот почему я размещаю это здесь.
В с ++ рассмотрим объявлениеint x[10];
Это одномерный массив, где x является базовым указателем, то есть содержит адрес первого элемента массива. Такx
дает мне этот адрес и*x
дает первый элемент.
аналогично для декларации
int x[10][20];
какая переменнаяx
Вот. Когда я делаю
int **z = x;
компилятор говорит, что не может конвертироватьint (*)[20]
вint **
. И почемуcout<<x;
а такжеcout<<*x;
дать такое же значение ??
А также, если я объявлю массив указателей как
int *p[10];
тогда есть ли разница междуx
а такжеp
(по своим типам) потому что когда кто-то заявляетint x[10]
а такжеint *p
тогда действительно назначитьx
вp
но это не так в случае двумерных массивов? Зачем?
Может ли кто-нибудь объяснить это мне или предоставить хороший ресурсный материал по этому вопросу.