Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/218: Рейтинг темы: голосов - 218, средняя оценка - 4.77
A_etot_ne_zanyat

Передача динамического массива в функцию

21.11.2008, 04:31. Показов 42838. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня задача передать в функцию в качестве параметра динамический 2-хмерный массив и получить результат. Тупо возвращать как результат указатель он почему-то не хочет. Кто что может что-нить подсказать?
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.11.2008, 04:31
Ответы с готовыми решениями:

Передача динамического массива в функцию
void create_matrix(float **matr,float * mass,int n1); ....................................................................... void...

Передача динамического массива в функцию
Помогите разобраться, не могу понять где ошибка. Отлаживал, программа "вываливается" при вызове функции освобождения памяти #include...

Передача динамического массива в функцию
Скажите пожалуйста, почему при передаче динамического массива в функцию, адрес локальной переменной (b) отличается от адреса исходной...

13
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
21.11.2008, 09:27
ка вариант используй три параметра - два указателя на ходные данные, и один - как выходной, потому что при передаче в функцию параметра по указателю позволяет его изменять и изменения будут переданы в основную функцию, т.е. сохраняться при дальнейшем выполнении... мутное что-то сказал...
0
17 / 16 / 6
Регистрация: 20.11.2008
Сообщений: 81
21.11.2008, 09:57
Что-то я не понял... Указатель на что тебе нужно возвращать... Да и как ты создаешь тот указатель, который возвращаешь???
0
 Аватар для Spo1ler
296 / 56 / 5
Регистрация: 22.05.2008
Сообщений: 788
21.11.2008, 20:04
Не возможно создать двухмерный динамический массив. Компилятор тебя пошлет.
0
сцуко киборг
 Аватар для Жестянка
103 / 30 / 4
Регистрация: 11.09.2008
Сообщений: 193
21.11.2008, 20:23
Как вариант можешь создать класс, содержащий массив. И его передавать куда надо.
Тем более, что "динамический двумерный массив" всёравно, как верно заметил Spo1ler, реализовать "влоб" невозможно.
0
85 / 85 / 6
Регистрация: 13.10.2008
Сообщений: 144
21.11.2008, 21:19
Ну, не знаю, на сколько это правильно но я делаю так:
//создаем динам. 2-мерный массив
int n=10;
int **arr = new int *[n];
for(int i=0;i<n;i++) arr[i] = new int[n];

//прототип функции прин. этот массив
void myFunction(int **, int rows, int columns);
//где rows-кол. строк, columns-столбцов
1
сцуко киборг
 Аватар для Жестянка
103 / 30 / 4
Регистрация: 11.09.2008
Сообщений: 193
21.11.2008, 22:14
Если так, то ничего возвращать не надо. Массив передается в подпрограмму "в оригинале", и все изменения в подпрограмме будут отражаться на нем и так. Тем более, функция типа void в принципе ничего не должна возвращать т.е. что бы ты не написал после return, компилятор будет ругаться.

А так, как написанно - по-моему правильно. Ничего изменять не надо.
0
нубик программист)
 Аватар для Мегатрон
96 / 10 / 0
Регистрация: 04.06.2008
Сообщений: 348
18.05.2009, 18:30
void myFunction(int **, int n, int m)
{
int n=10;
int **arr = new int *[n];
for(int i=0;i<n;i++) arr[i] = new int[n];
}
вот так чтоли динамический массив в функции будет

Добавлено через 5 минут 48 секунд
C++
1
2
3
4
5
6
7
 
void myFunction(int **, int n, int m)
{
                   
int **arr = new int *[n] *[m];
for(int i=0;i<n;i++) arr[i] = new int[n];
}
вот так будет выглядеть функция двухмерного динамического массива
0
MCSD: APP BUILDER
 Аватар для IT_Exp
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
18.05.2009, 18:51
A_etot_ne_zanyat,
У меня задача передать в функцию в качестве параметра динамический 2-хмерный массив
Сие в принципе невозможно, т.к. в Си нет динамических массивов.
В С++ можно заюзать класс std::vector, но препод тебе скорее всего не разрешит (они обычно любят студням гемора подкинуть Ж)
А для остального подойдут предложенные здесь варианты двойных указателей.
0
инженер-системотехник
 Аватар для Haster
111 / 111 / 5
Регистрация: 10.03.2009
Сообщений: 533
18.05.2009, 19:14
Мегатрон, этот код не правильный...
И зачем создавать в функции двумерный массив, если он должен в фуекцию передаваться?

Добавлено через 8 минут 16 секунд
Посмотри пост Feuer, он правилен
0
нубик программист)
 Аватар для Мегатрон
96 / 10 / 0
Регистрация: 04.06.2008
Сообщений: 348
19.05.2009, 00:08
И зачем создавать в функции двумерный массив, если он должен в фуекцию передаваться?
тоесть функция не может внутри себя создавать такой массив?
0
Maniac
Эксперт С++
 Аватар для ISergey
1464 / 965 / 160
Регистрация: 02.01.2009
Сообщений: 2,820
Записей в блоге: 1
19.05.2009, 00:21
Мегатрон, Вот те со старых запасов
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <iostream>
 
 
template<typename T> inline int arrlen(T *arr){
    return static_cast<int>(_msize(arr)/sizeof(T));
}
 
int **arrCreate(const int row,const int col){
    int **arr = new int*[row];
    for(int i = 0; i < row; ++i)
        arr[i] = new int[col];
 
    return arr;
}
void arrFree(int **arr){
    int lenrow = arrlen(arr);
    for(int i = 0; i < lenrow; ++i)
        delete[] arr[i];
    delete[] arr;
}
void arrInput(int **arr){
    int lenrow  = arrlen(arr);
    int lencol  = arrlen(arr[0]);
    for(int i = 0; i < lenrow; ++i)
        for(int j = 0; j < lencol; ++j){
            std::cout<<"arr["<<i<<"]"<<"["<<j<<"] = ";
            std::cin>>arr[i][j];
        }
 
}
void arrOut(int **arr){
    int lenrow  = arrlen(arr);
    int lencol  = arrlen(arr[0]);
    for(int i = 0; i < lenrow; ++i){
        std::cout<<"[ ";
        for(int j = 0; j < lencol; ++j)
            std::cout<<arr[i][j]<<" ";
        std::cout<<"]"<<std::endl;
    }
}
int main()
{
    const int r = 3;
    const int c = 3;
 
    int **arr = arrCreate(r,c);
    arrInput(arr);
    arrOut(arr);
    arrFree(arr);
    return 0;
}
1
нубик программист)
 Аватар для Мегатрон
96 / 10 / 0
Регистрация: 04.06.2008
Сообщений: 348
19.05.2009, 07:09
int n;
cin >> n;
int **arr = new int *[n];
for(int i=0;i<n;i++) arr[i] = new int[n];
так тут получается задаем n столбцов,а как же со строками?
0
инженер-системотехник
 Аватар для Haster
111 / 111 / 5
Регистрация: 10.03.2009
Сообщений: 533
19.05.2009, 09:47
Мегатрон, в функции можно делать что угодно, и создавать динамические массивы тоже, просто по условию задачи массив уже есть и его нужно передать в функцию, а не создавать там
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.05.2009, 09:47
Помогаю со студенческими работами здесь

Передача динамического массива в функцию
Добрый вечер! Пытаюсь передать динамический массив a с размером n в функцию ii, изменить его, вернуть и вывести. Но выводятся какие-то...

Передача динамического массива в функцию
Привет, помогите пожалуйста переделать программку в динамический массив и с помощью передачи массива в функцию #include...

Передача динамического массива в функцию
Нужно передать динамический массив в функцию, описав как ссылку (&amp;p). Но я не понимаю, как к нему обращаться в функции.

Передача динамического массива в функцию
извините мб глупый вопрос но не знаю как передать в функцию свой массив в 2 примере( в 1 примере все норм работает. void...

Передача в функцию динамического массива
Всем привет. Есть, например, функция, работающая с динамическим массивом. Допустим я заполняю этот массив нулями. Далее я передаю его в...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru