Пример 10. Инициализация двумерного массива с помощью циклов
Пример 10. Инициализация двумерного массива с помощью циклов
#include <stdio.h> intmain() { inta[2][3]; //Массив из 2 строк и 3 столбцов inti, j; //Автоматическое заполнение элементов массива //Цикл по строкам for (i = 0; i<2; i++){ // Цикл по столбцам for(j = 0; j<3; j++){ printf("a[%d][%d] = ", i, j); /*Вывод указания элемента, значение которого требуется*/ scanf("%d", &a[i][j]); //Считывание введённого значения } } //Вывод массива на экран //Цикл по строкам for(i = 0; i<2; i++){ //Цикл по столбцам for(j = 0; j<3; j++){ printf("%d ", a[i][j]); /*Вывод значения элемента массива, находящегося на строке i в столбце j */ } printf("\n"); //Перевод каретки } getchar(); //Задержка вывода return0; }
Многомерные массивы. Размерность.
Задание размерности многомерного массива на этапе выполнения программы
int nstr; nstb; cout << " Введите количество строк и столбцов :"; cin >> nstr >> nstb; int **a = new int *[nstr]; // 1 for(int i = 0; i<nstr; i++) // 2 a[i] = new int [nstb]; // 3
| - объявляется переменная типа «указатель на указатель на int» и выделяется память под массив указателей на строки массива;
- организуется цикл для выделения памяти под каждую строку массива;
- каждому элементу массива указателей на строки присваивается адрес начала участка памяти, выделенного под строку двумерного массива.
Данный способ выделения памяти является более универсальным и безопасным.
Массивы
Замечания:
- Освобождение памяти из-под массива с любым количеством измерений выполняется с помощью операции delete [].
- Для правильной интерпретации объявлений полезно запомнить мнемоническое правило: «суффикс привязан крепче префикса».
- если при описании переменной используются одновременно префикс *(указатель) и суффикс [] (массив), то переменная интерпретируется как массив указателей, а не указатель на массив;
- int *p[10]; — массив из 10 указателей на int.
|