#include <iostream>
// #include <Windows.h>
#include <typeinfo>
int main() {
using std::cout;
using std::endl;
cout << "Трёхмерная массивная переменная f:\n";
const int x{4}, y{5}, z{3};
double f[z][y][x] =
{
{
{0.01, 0.02, 0.03, 0.04},
{0.11, 0.12, 0.13, 0.14},
{0.21, 0.22, 0.23, 0.24},
{0.31, 0.32, 0.33, 0.34},
{0.41, 0.42, 0.43, 0.44}
},
{
{1.01, 1.02, 1.03, 1.04},
{1.11, 1.12, 1.13, 1.14},
{1.21, 1.22, 1.23, 1.24},
{1.31, 1.32, 1.33, 1.34},
{1.41, 1.42, 1.43, 1.44}
},
{
{25.4, 36.6, 69.1, 22.2},
{11.7, 77.5, 12.2, 54.2},
{90.4, 85.2, 81.9, 38.6},
{13.5, 51.3, 19.8, 42.0},
{66.6, 77.7, 88.8, 99.9}
}
};
for(int i{}; i < z; ++i)
{
cout << "\nЭтаж " << i << "\n";
for(int k{}; k < y; ++k)
{
cout << "\n";
for(int l{}; l < x; ++l)
cout << f[i][k][l] << "|";
}
}
cout << endl; cout << endl;
cout << " f..........." << f << endl;
cout << " *f..........." << *f << endl;
cout << " **f..........." << **f << endl;
cout << " ***f..........." << ***f << " - значение начальной ячейки!" << endl;
cout << endl;
cout << " &f..........." << &f << " - адрес массивной переменной f" << endl;
cout << endl;
cout << " *&f..........." << *&f << endl;
cout << " **&f..........." << **&f << endl;
cout << " ***&f..........." << ***&f << endl;
cout << " ****&f..........." <<****&f << " - получение значения с адреса (разыменование указателя) начальной ячейки" << endl;
cout << endl;
cout << " Поименуем указатель т.е. выполним стэйтмент: double *ptrONf = ***&f; \n";
double *ptrONf = ***&f;
cout << " ptrONf................." << ptrONf << endl;
cout << "Разыменуем указатель:\n";
cout << " *ptrONf................." << *ptrONf << endl;
cout << "Адрес указателя:\n";
cout << " &ptrONf................." << &ptrONf << endl;
cout << "Значение на адресе указателя:\n";
cout << "*&ptrONf................." << *&ptrONf << endl;
cout << "typeid( ptrONf).name().." << typeid( ptrONf).name() << endl;
cout << "typeid( *ptrONf).name().." << typeid( *ptrONf).name() << endl;
cout << "typeid( &ptrONf).name().." << typeid( &ptrONf).name() << endl;
cout << "typeid(*&ptrONf).name().." << typeid(*&ptrONf).name() << endl;
cout << endl;
cout << "typeid( f).name()..." << typeid( f).name() << endl;
cout << "typeid( *f).name()..." << typeid( *f).name() << endl;
cout << "typeid( **f).name()..." << typeid( **f).name() << endl;
cout << "typeid( ***f).name()..." << typeid( ***f).name() << " - тип значения в переменной f (double)" << endl;
cout << endl;
cout << "typeid( &f).name()..." << typeid( &f).name() << " - тип указателя на переменную f (double с координатами)" << endl;
cout << endl;
cout << "typeid( *&f).name()..." << typeid( *&f).name() << " - A[z]этажи_A[y]строки_A[x]столбцы" << endl;
cout << "typeid( **&f).name()..." << typeid( **&f).name() << endl;
cout << "typeid( ***&f).name()..." << typeid( ***&f).name() << endl;
cout << "typeid(****&f).name()..." << typeid(****&f).name() << " - тип указателя на начальное значение" << endl;
cout << endl;
cout << " f[0][0][0]..........." << f[0][0][0] << endl;
// cout << " *f[0][0][0]..........." << *f[0][0][0] << endl; не компилируется
cout << " &f[0][0][0]..........." << &f[0][0][0] << endl;
cout << " *&f[0][0][0]..........." << *&f[0][0][0] << endl;
cout << "typeid( f[0][0][0]).name()..." << typeid( f[0][0][0]).name() << endl;
// cout << "typeid( *f[0][0][0]).name()..." << typeid( *f[0][0][0]).name() << endl; не компилируется
cout << "typeid( &f[0][0][0]).name()..." << typeid( &f[0][0][0]).name() << endl;
cout << "typeid( *&f[0][0][0]).name()..." << typeid(*&f[0][0][0]).name() << endl;
cout << endl;
cout << "Пример из урока 82\n"; cout << endl;
int array[4] = { 5, 8, 6, 4 };
cout << " array..........." << array << endl;
cout << "typeid( array).name()..." << typeid( array).name() << endl;
// Разыменование массива (переменной array) приведёт к возврату первого элемента массива (элемента под номером 0)
cout << " *array..........." << *array << endl; // выведется 5!
cout << "typeid( *array).name()..." << typeid( *array).name() << endl;
cout << " &array..........." << &array << endl;
cout << "typeid( &array).name()..." << typeid( &array).name() << endl;
cout << " *&array..........." << *&array << endl;
cout << "typeid(*&array).name()..." << typeid(*&array).name() << " - A[4]столбцы_тип" << endl;
cout << endl;
int *ptrONarray = array;
cout << " ptrONarray.................." << ptrONarray << endl;
cout << "typeid( ptrONarray).name()..." << typeid( ptrONarray).name() << endl;
cout << " *ptrONarray.................." << *ptrONarray << endl;
cout << "typeid( *ptrONarray).name()..." << typeid( *ptrONarray).name() << endl;
cout << " &ptrONarray.................." << &ptrONarray << endl;
cout << "typeid( &ptrONarray).name()..." << typeid( &ptrONarray).name() << endl;
cout << "&*ptrONarray.................." <<&*ptrONarray << endl;
cout << "typeid(*&ptrONarray).name()..." << typeid(*&ptrONarray).name() << endl;
}