Как корректно создать указатель на двумерный массив? - C (СИ)
Формулировка задачи:
Т.е. вопрос вот в чем. Можно сделать указатель на массив и в цикле его перебрать. Я делаю это вот так:
Но как быть с двумерным массивом? И хотелось бы выбирать отдельно элементы по 2й группе элементов. Ну, например вот:
- вот эта связка не работает. Но на выходе хотелось бы получить что-то подобное тому что я изобразил. Спасибо за помощь!!
const int M=5; int Mass[M]={0}; int *p_Mass=0; p_Mass = Mass; for (int i = 0; i < M; i++) { Mass[i]=i+1; } cout << "One massiv " <<endl; for (int i = 0; i<M-1; i++) { std::cout << *(p_Mass+i) <<std::endl; }
short Mass2[M][2]={0}; short *p_Mass2[M][2]; p_Mass2[M][2]= &Mass2[M][2]; for (short i = 0; i < M; i++) { for (short j = 0; j < 2; j++) { Mass2[i][j] =(i+1)+((j)*10); } } cout << "Two massiv " <<endl; for (int i = 0; i < M; i++) { std::cout << *(p_Mass2[M][0]) <<std::endl; std::cout << *(p_Mass2[M][1]) <<std::endl; }
Решение задачи: «Как корректно создать указатель на двумерный массив?»
textual
Листинг программы
const int M=5; int Mass[M]={0}; int *p_Mass; p_Mass = Mass; for (int i = 0; i < M-1; i++) { Mass[i]=i+1; } cout << "One massiv " <<endl; for (int i = 0; i<M; i++) { std::cout << p_Mass[i] <<std::endl; } //***************************** int Mass2[M][2]; int *p_Mass2; p_Mass2 =Mass2[0]; for (int i = 0; i < M-1; i++) { Mass2[i][0]=i+1; Mass2[i][1]=i+10; } cout << "Two massiv " <<endl; for (int i = 0; i<M; i++) { std::cout << p_Mass2[0]+i <<std::endl; std::cout << p_Mass2[1]+i <<std::endl; } //***************************** struct XY {short x,y;}; XY Mass3[M]={0}; XY *p_Mass3; p_Mass3 = Mass3; for (int i = 0; i < M-1; i++) { Mass3[i].x=i+1; Mass3[i].y=i+10; } cout << "Three massiv " <<endl; for (int i = 0; i<M; i++) { std::cout << p_Mass3[i].x <<std::endl; std::cout << p_Mass3[i].y <<std::endl; } //***************************** XY Mass4[M][2]={0}; XY *p_Mass4; p_Mass4 = Mass4[0]; for (int i = 0; i < M-1; i++) { Mass4[i][0].x=i+1; Mass4[i][0].y=i+10; Mass4[i][1].x=i+2; Mass4[i][1].y=i+20; } cout << "Four massiv " <<endl; for (int i = 0; i<M; i++) { std::cout << p_Mass4[0].x+i <<std::endl; std::cout << p_Mass4[0].y+i <<std::endl; std::cout << p_Mass4[1].x+i <<std::endl; std::cout << p_Mass4[1].y+i <<std::endl; } //*****************************
Объяснение кода листинга программы
- Объявляется константа M равная 5.
- Объявляется одномерный массив Mass размером M и инициализируется нулями.
- Указатель p_Mass указывающий на начало массива Mass, инициализируется значением Mass.
- В цикле для каждого элемента массива Mass, значение этого элемента устанавливается равным i+1.
- Выводится содержимое массива Mass с помощью цикла for и функции std::cout.
- Объявляется двумерный массив Mass2 размером Mx2 и инициализируется нулями.
- Указатель p_Mass2 указывающий на первый столбец двумерного массива Mass2, инициализируется значением Mass2[0].
- В цикле для каждого элемента первого столбца двумерного массива Mass2, значение этого элемента устанавливается равным i+1.
- Выводится содержимое первого столбца двумерного массива Mass2 с помощью цикла for и функции std::cout.
- Объявляется структура XY с полями x и y типа short.
- Объявляется массив структур XY Mass3 размером M и инициализируется нулями.
- Указатель p_Mass3 указывающий на начало массива структур XY Mass3, инициализируется значением Mass3.
- В цикле для каждой структуры XY в массиве Mass3, значения полей x и y устанавливаются равными i+1 и i+10 соответственно.
- Выводится содержимое массива Mass3 с помощью цикла for и функций std::cout.
- Объявляется двумерный массив структур XY Mass4 размером Mx2 и инициализируется нулями.
- Указатель p_Mass4 указывающий на первый столбец двумерного массива структур XY Mass4, инициализируется значением Mass4[0].
- В цикле для каждого элемента первого столбца двумерного массива структур XY Mass4, значения полей x и y устанавливаются равными i+1 и i+20 соответственно.
- Выводится содержимое первого столбца двумерного массива структур XY Mass4 с помощью цикла for и функций std::cout.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д