Многомерные динамические массивы (>2) С++
Привет народ. Разобрался с одномерными и двухмерными, вот: #include"stdafx.h"
#include"iostream"
using namespace std;
int main(){
int* *mas = new int*[10];
for (int y = 0; y < 10; y++){
*(mas + y) = new int[10];
for (int t = 0; t < 10; t++){
*(*(mas + y) + t)=rand() % 10;
cout << *(*(mas + y) + t) << ' ';
}
cout << '\n';
}
system("pause");
return 0;
}
но дальше отовсюду как я смотрел по примерам начинают вылезать дополнительные "*", объясните пожалуйста на чём основан ввод дополнительных "*", я понимаю что там массивы указателей, просто запутался и надо чтобы кто-то понимающий быстро и понятно растолковал. Спасибо.
Не понимаю если точно зачем вот эти звёздочки (они в скобках)
int* (*)*mas = new int*(*)[10];
ведь для создания массива указателей можно обойтись и без них.
Речь о трёхмерном массиве.
Вот вам наглядный пример жизни двумерного динамического массива в функциях.
я понимаю эти звезды (мать их) но такой жеский геммор с ними, и грамотных объяснений нет, надо самому доходить. пробуйте с & это указатель..
А зачем для операций использовать звездочки? Нагляднее и понятнее для новичка работа через индексные обозначения.
Грубо:
каждый самый внутренний одномерный массив - область памяти выделенная под значения.
второй слой - область с массивом указателей на начала этих областей.
третий слой - область с массивом указателей на массивы 2го слоя.
и т. д.
Каждый слой даёт дополнительную звездочку отмечающую уровни разгребания указателей
указатель можно сказать область памяти, то есть *(мас + у) означает указание на у значение после начала массива, что соответствует мас (у) . При следующей мерности *(*(мас+у) +х) = мас (х) (у) или у, х (прости, не помню)