11 / 11 / 2
Регистрация: 16.08.2009
Сообщений: 434
|
||||||
1 | ||||||
Возвращение многомерного массива из функции01.09.2009, 22:01. Показов 33840. Ответов 24
Метки нет (Все метки)
Как вернуть многомерный массив из функции
для обычного массива c использованием указателей это выглядит так
0
|
01.09.2009, 22:01 | |
Ответы с готовыми решениями:
24
Как реализовать передачу массива в функцию и возвращение массива из функции? Возвращение массива из функции Возвращение массива из функции Возвращение массива из функции |
2816 / 1407 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
|
|
01.09.2009, 22:06 | 2 |
создавать и передавать массив как массив указателей на указатели (int**), или указателей на указатели на указатели (int***). имхо - самый оптимальный вариант.
0
|
11 / 11 / 2
Регистрация: 16.08.2009
Сообщений: 434
|
||||||
01.09.2009, 22:09 [ТС] | 3 | |||||
ну а как это в коде записать то?
мне нужны три строчки пототип определение и вызов функции писал так для двумерного массива
пример ошибки cannot convert parameter 1 from 'int [5][15]' to 'int **' если прототип и определение правильные как делать вызов ?
0
|
2816 / 1407 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
|
||||||
01.09.2009, 22:21 | 4 | |||||
поссмотри вот
это
0
|
425 / 229 / 87
Регистрация: 25.03.2009
Сообщений: 744
|
||||||
01.09.2009, 22:30 | 5 | |||||
0
|
2816 / 1407 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
|
|
01.09.2009, 22:32 | 6 |
Андрейка, а чистить за собой?) Я понимаю, что программа сама почистить при завершении.. но это не тру стайл.
0
|
425 / 229 / 87
Регистрация: 25.03.2009
Сообщений: 744
|
||||||
01.09.2009, 22:35 | 7 | |||||
на скорую руку =)
0
|
MCSD: APP BUILDER
8794 / 1073 / 104
Регистрация: 17.06.2006
Сообщений: 12,602
|
||||||
01.09.2009, 22:43 | 8 | |||||
Как вернуть многомерный массив из функции
по ссылке.
1
|
01.09.2009, 23:02 | 9 |
это зависит. от этого и нужно танцевать. способов "передать много", нужно знать контекст:
- имеется массив, нужно вызвать ф-ию, которая наполнит его данными - не имеется ничего, функция его создаст и передаст на него ссылку и размер. вызывающий ответственен за освобождение - ??? собственно, первый вариант, наверное, наиболее предпочтителен. как это записать - не играет большого значения и не имеет большой роли. транслируется это всегда в конструкцию, которая положит массив в вызывающем контексте, и передаст на него указатель в вызове.
0
|
562 / 373 / 55
Регистрация: 05.04.2009
Сообщений: 767
|
|
01.09.2009, 23:06 | 10 |
Rififi подскажи, массив тогда все время жизни программы
будет находится в памяти?
0
|
7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
|
|
01.09.2009, 23:31 | 11 |
Rififi над вами прикалывается, а вы ведетесь
0
|
MCSD: APP BUILDER
8794 / 1073 / 104
Регистрация: 17.06.2006
Сообщений: 12,602
|
|
02.09.2009, 00:19 | 12 |
Rififi над вами прикалывается, а вы ведетесь
а чё сразу прикалывается-то? ((: функция дейвствительно возвращает массив по-ссылке, как и возжелал аффтар :gigi: mirso, массив тогда все время жизни программы будет находится в памяти? поскольку переменная имеет статическое время жизни (как точно сказать по-русски не знаю, короче, static storage duration), то таки да, всё время. Инициализация массива будет выполнена до первого входа в функцию (или во время первого вызова)
2
|
7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
|
|
02.09.2009, 00:24 | 13 |
Массив будет сразу заполнен компилятором (нулями надо полагать) в сегменте данных.
0
|
MCSD: APP BUILDER
8794 / 1073 / 104
Регистрация: 17.06.2006
Сообщений: 12,602
|
|
02.09.2009, 00:32 | 14 |
odip,
Да не будет никакой инициализации. Массив будет сразу заполнен компилятором (нулями надо полагать) в сегменте данных. чё, правда что ли? :eek: А теперь - правильный ответ: 6.7/4
0
|
11 / 11 / 2
Регистрация: 16.08.2009
Сообщений: 434
|
|
02.09.2009, 00:35 [ТС] | 16 |
Monte-Cristo
Андрейка мой код работает как то странно вроде результат и записывает в txt файл тот который я ожидаю но потом все вылетает с ошибкой понять и разобраться с которой я пока не в состоянии А как нить без new delete это можно сделать ? для одно мерного массива я их не использовал Rififi а где в коде прототип определение и вызов функции ? надо что то типо твоего кода что то самое простое без лишних данных просто те три пункта что я написал novi4ok Имееться массив с заранее определенным количеством элементов надо вызвать функцию которая наполнит его данными то есть если совсем конкретно то создаеться массив A[5][15] с нулевыми значениями всех элементов потом он передаеться в функцию f(int **A) (столбцы и строки передавать не нужно они не изменяються и известны заранее) после чего я получаю заполненый двумерный массив A если совсем просто надо передать в функцию двумерный массив A[5][15] c заранее известным количеством элементов и вернуть с одним измененным элементом скажем A[0][0]=100; все больше никаких действий ненужно
0
|
7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
|
|
02.09.2009, 00:41 | 17 |
Rififi - ну не тормози так
Ключевое слово - "before". Это не значит что прямо перед блоком, заполнение может быть произведенно намного раньше ! Оно все равно будет "before" ! А скорее всего правильный компилятор создаст и заполнит этот массив в сегменте данных еще на этапе компиляции. Linker запихает это все в exe-ник. И к моменту когда программа еще только запустится заполненный статический глобальный или локальный массив уже будет лежать в памяти. Добавлено через 1 минуту 2nill: много слов, а ГДЕ КОД ?
0
|
MCSD: APP BUILDER
8794 / 1073 / 104
Регистрация: 17.06.2006
Сообщений: 12,602
|
||||||
02.09.2009, 00:45 | 18 | |||||
nill,
а где в коде прототип определение и вызов функции ? строки 1-5 - это прототип и определение. это как в рекламе шампуня от перхоти "два-в-одном" в строке 7 - вызов надо вызвать функцию которая наполнит его данными заполнить массив, и вернуть его - это не одно и то же для заполнения можно использовать функцию типа такой void fill(int arr[][10]); // для C или
Добавлено через 2 минуты odip, Ключевое слово - "before". Это не значит что прямо перед блоком, заполнение может быть произведенно намного раньше ! Оно все равно будет "before" ! а у меня чё было написано? что-то теперь я вообще не понимаю, ты с чем споришь-то?
0
|
11 / 11 / 2
Регистрация: 16.08.2009
Сообщений: 434
|
|
02.09.2009, 00:49 [ТС] | 19 |
Rififi
только ненадо усложнять и так ничего не понятно про заполнение мне пока не нужно знать заполняю я в ручную arr[0][1]=1; и так далее а вопрос мой о возврате измененнного двумерного массива из функции
0
|
7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
|
|
02.09.2009, 00:49 | 20 |
Просто я в посте #13 уточнил где скорее всего будет это место "before". А ты начал из какого-то талмуда фразы приводить с этим "before"
0
|
02.09.2009, 00:49 | |
02.09.2009, 00:49 | |
Помогаю со студенческими работами здесь
20
Возвращение из функции массива указателей Возвращение из функции значения массива Возвращение двумерного массива из функции Возвращение двумерного массива из функции Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |