Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Sacredd
0 / 0 / 0
Регистрация: 05.06.2012
Сообщений: 28
#1

Массив - C++

27.06.2012, 01:43. Просмотров 264. Ответов 6
Метки нет (Все метки)

Помогите пожалуйста, объяснить код программы :
C++
1
2
3
int **arr = new int *[size];
for(int i = 0; i < size; i++)
  arr[i] = new int [cols];
Вот этот.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.06.2012, 01:43     Массив
Посмотрите здесь:

C++ Задать массив вещественных чисел и вставить в исходный массив число
C++ Массив: Сформируйте массив C[n+m], состоящий из элементов массивов А и В, упорядоченный по возрастанию.
C++ Задан вектор X[20]. Положительные числа переписать в массив Y, а отрицательные в массив W
C++ задача записать в массив отрицательные элементы матрицы в массив и вывести их
Массив: Составить массив из двух исходных по заданному принципу заполнения C++
Массив: Переписать элементы одномерного массива A, попадающие в интервал [2, 6], в массив B. C++
Все положительные элементы из массива записать в массив A, а отрицательные в массив B C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
novi4ok
550 / 503 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
27.06.2012, 01:56     Массив #2
C++
1
2
3
4
5
int **arr = new int *[3]; // выделяет память под три указателя на "указатель на int"
 
    for(int i = 0; i < 3; i++){   
        arr[i] = new int [4]; // выделяет память под 4 int и присваивает его значение i-тому указателю из трех, выделенных в первом операторе
    }
xADMIRALx
67 / 61 / 1
Регистрация: 09.06.2012
Сообщений: 291
27.06.2012, 02:07     Массив #3
novi4ok
Боюсь что
C++
1
2
3
4
5
int **arr = new int *[3]; // arr масив укателей на укалатели /*как то так :) */
for (int i = 0; i < 3;++i)
{
 arr[i] = new int[4] /*не скомпилируется ;) */
}
Sacredd
0 / 0 / 0
Регистрация: 05.06.2012
Сообщений: 28
27.06.2012, 02:11  [ТС]     Массив #4
спасибо.

Добавлено через 4 минуты
как я понял

C++
1
2
3
int **arr = new int *[size]; //  созхдается в памяти массив размерности size
for(int i = 0; i < size; i++) // цикл заполнения массива по i да ?
arr[i] = new int [cols]; //  а вот тут всё равно не понял
xADMIRALx
67 / 61 / 1
Регистрация: 09.06.2012
Сообщений: 291
27.06.2012, 02:35     Массив #5
C++
1
2
3
4
5
6
7
8
9
10
arr[i] = new int [cols];/* тут у нас arr[i] = адрес массива int */
/*попробуйте вот так сделать */
    int size = 5;
    int cols = 4;
    int **arr = new int *[size]; // 
for(int i = 0; i < size; i++) 
{
arr[i] = new int [cols]; 
    cout << arr[i];
}
alsav22
5415 / 4811 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.06.2012, 04:03     Массив #6
Добавлено через 2 минуты
Цитата Сообщение от xADMIRALx Посмотреть сообщение
novi4ok
Боюсь что
C++
1
2
3
4
5
int **arr = new int *[3]; // arr масив укателей на укалатели /*как то так :) */
for (int i = 0; i < 3;++i)
{
 arr[i] = new int[4] /*не скомпилируется ;) */
}
Почему? Компилируется.

Добавлено через 28 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
using namespace std;
void main()
{
    int size = 5;
    int cols = 6;
    
    int **arr = new int *[size];
    
    for(int i = 0; i < size; i++)
    arr[i] = new int[cols];
    
    for (int j = 0; j < size; j++)
    {
        for (int i = 0; i < cols; i++)
        {
            *(arr[j] + i) = j;
        }
    }
    for (int j = 0; j < size; j++)
    {
        for (int i = 0; i < cols; i++)
        {
            cout << *(arr[j] + i);
        }
        cout << endl;
    }
 
    system("pause");
}
Добавлено через 11 минут
Может быть в конце ещё это дописать:
C++
1
2
3
for (int i = 0; i < size; i++)
        delete [] arr[i];
    delete [] arr;
Добавлено через 6 минут
Или так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
using namespace std;
void main()
{
    int size = 5;
    int cols = 6;
    
    int **arr = new int *[size];
    
    for(int i = 0; i < size; i++)
    arr[i] = new int[cols];
    
    for (int j = 0; j < size; j++)
    {
        for (int i = 0; i < cols; i++)
        {
            arr[j][i] = j;
        }
    }
    for (int j = 0; j < size; j++)
    {
        for (int i = 0; i < cols; i++)
        {
            cout << arr[j][i];
        }
        cout << endl;
    }
    
    for (int i = 0; i < size; i++)
        delete [] arr[i];
    delete [] arr;
 
 
    system("pause");
}
Добавлено через 5 минут
Цитата Сообщение от Sacredd Посмотреть сообщение
Помогите пожалуйста, объяснить код программы :
C++
1
2
3
int **arr = new int *[size];
for(int i = 0; i < size; i++)
  arr[i] = new int [cols];
Вот этот.
Получается, что это создание двумерного динамического массива.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.06.2012, 06:21     Массив
Еще ссылки по теме:

C++ Задано массив строк произвольной длины. Отформатировать данный массив по ширине поля.
Как в массив скопировать массив, который заполнен через указатели C++
Дан массив. Создать массив 2 из четных чисел первого массива C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
silent_1991
Эксперт С++
4956 / 3032 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
28.06.2012, 06:21     Массив #7
Цитата Сообщение от xADMIRALx Посмотреть сообщение
Боюсь что
Не бойтесь, всё будет хорошо.
Yandex
Объявления
28.06.2012, 06:21     Массив
Ответ Создать тему
Опции темы

Текущее время: 03:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru