С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

Функция и двумерный массив - C++

19.05.2013, 21:01. Просмотров 566. Ответов 15
Метки нет (Все метки)

Как использовать в качестве аргумента функции двумерный массив?
Все не могу понять, пожалуйста напишите с маленьким примером, чтобы понятно было )
Заранее спасибо )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2013, 21:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функция и двумерный массив (C++):

Функция и двумерный массив - C++
Я не знаю в чём проблема заключается на этом этапе, но гуглил я много. Если не сложно, просто исправьте код под нужный или объясните, как...

Двумерный массив и функция - C++
Нууууу плиззз подскажите как сделать в виде отдельной функции????? Borland C++ #include<iostream.h> #include<math.h> ...

двумерный массив и функция! - C++
Парни помогите, чего-то я не догоняю! у меня есть функция kol она считает сколько столбцов с нулевым элементом встречается и плюсует в...

Функция и двумерный массив. - C++
День добрый. У меня такое задание: нужно создать функцию которая будет находить сумму элементов в тех строках, которые содержат хотя бы...

Функция возвращает двумерный массив - C++
У кого-то есть пример возврата функцией массива? Я пыталась сделать как с обычной переменной - оно компилируется, но не возфращает...

Функция, принимающая двумерный массив - C++
Дело такое: Есть функция, которая в параметрах принимает двумерный массив. Причем двумерные массивы будут различаться, как в количество...

15
castaway
Эксперт С++
4916 / 3024 / 370
Регистрация: 10.11.2010
Сообщений: 11,081
Записей в блоге: 10
Завершенные тесты: 1
19.05.2013, 21:02 #2
А как ты пробовал?
0
Jeerj
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 42
19.05.2013, 21:18  [ТС] #3
lazybiz,

C++
1
2
3
4
5
6
int N;
int **A = new int*[N];
for(int i=0; i<N; i++)
{
   A[i] = new int [N];
}
Я знаю что вне функции делается все так.
А как это сделать в функции не знаю
0
castaway
Эксперт С++
4916 / 3024 / 370
Регистрация: 10.11.2010
Сообщений: 11,081
Записей в блоге: 10
Завершенные тесты: 1
19.05.2013, 21:25 #4
C++
1
2
3
4
5
void my_func( int **array )
{
    array[0][0] = 123;
    ...
}
1
Jeerj
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 42
19.05.2013, 21:31  [ТС] #5
lazybiz,
А как вызвать функцию? Используя этот массив в качестве аргумента
C++
1
2
3
A[3][3]={1,2,3,
         4,5,6,
         7,8,9};
0
castaway
Эксперт С++
4916 / 3024 / 370
Регистрация: 10.11.2010
Сообщений: 11,081
Записей в блоге: 10
Завершенные тесты: 1
19.05.2013, 21:42 #6
В параметре всегда должен присутствовать размер массива, исключение - размер первого "подмассива", его размер можно не указывать.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
using namespace std;
 
int A[3][3] = {
    { 1, 2, 3 },
    { 4, 5, 6 },
    { 7, 8, 9 } };
 
void test( int a[][3] )
{
    // ...
}
 
int main()
{
    test( A );
    return 0;
}
1
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
19.05.2013, 22:41 #7
Цитата Сообщение от lazybiz Посмотреть сообщение
В параметре всегда должен присутствовать размер массива
Актуально только для массивов на стеке. Для динамических достаточно только указателя для осуществления компиляции.
1
daslex
1286 / 530 / 109
Регистрация: 02.08.2011
Сообщений: 2,750
19.05.2013, 22:50 #8
Tulosba, ну и как потом удалять будешь?
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
19.05.2013, 22:53 #9
Цитата Сообщение от daslex Посмотреть сообщение
ну и как потом удалять будешь?
какое это имеет отношение к передаче массива в функцию?
0
daslex
1286 / 530 / 109
Регистрация: 02.08.2011
Сообщений: 2,750
19.05.2013, 22:57 #10
Прямое.
Цитата Сообщение от Tulosba Посмотреть сообщение
Для динамических
не было бы этих слов, я бы не спросил.
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
19.05.2013, 23:25 #11
daslex, я не просто так добавил фразу:
Цитата Сообщение от Tulosba Посмотреть сообщение
для осуществления компиляции
Понятно, что для использования массива так и или иначе надо знать его размеры. Но имея дело со статическим массивом размерности 2+, придется и на этапе компиляции знать его размеры. Для динамического такого требования нет.
0
daslex
1286 / 530 / 109
Регистрация: 02.08.2011
Сообщений: 2,750
19.05.2013, 23:33 #12
Tulosba, если в функция будет принимать массив как указатель на указатель, то ничто и никто не будет знать его (массива) размеры, ибо sizeof по указателю будет работать не для размера массива, а только и только для размера указателя. Размер указателя не есть размер массива.

Поэтому в массив функции нужно сообщать размер для любого динамического массива (Одномерный он, двумерный, n-мерый).
0
castaway
Эксперт С++
4916 / 3024 / 370
Регистрация: 10.11.2010
Сообщений: 11,081
Записей в блоге: 10
Завершенные тесты: 1
19.05.2013, 23:39 #13
Цитата Сообщение от Tulosba Посмотреть сообщение
Для динамического такого требования нет.
Согласен. Мой ответ был не полным.

Добавлено через 1 минуту
Цитата Сообщение от daslex Посмотреть сообщение
Tulosba, если в функция будет принимать массив как указатель на указатель, то ничто и никто не будет знать его (массива) размеры
Можно вместе с динамическим массивом в функцию передать и его размер.

Добавлено через 3 минуты

Не по теме:

Туфтология: Если в функцию передать статический массив, то его размеры тоже никто не будет знать! Тогда как с ним работать?)

1
daslex
1286 / 530 / 109
Регистрация: 02.08.2011
Сообщений: 2,750
19.05.2013, 23:58 #14
Tulosba, я не буду больше с вами спорить в этой теме. Для того, чтоб скомпилировать много чего не обязательно и незнающий человек может подумать, если оно необязательно, то да ну его на ... , без этого ведь короче.

Добавлено через 9 минут
Цитата Сообщение от lazybiz Посмотреть сообщение
Туфтология: Если в функцию передать статический массив, то его размеры тоже никто не будет знать! Тогда как с ним работать?)
Кривая идея и кривой код разумеется :-D
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <cmath>
#include <iomanip>
#include <iostream>
 
void func(int A[])
{
    for (int i=0;i<10;i++) std::cout<<A[i]<<"\n"; //и так по миллиону функций число прописать, а потом узнать, что на 1 ошибся
}
 
int main()
{
    int A[10]={1,2,3,4,5,6,7,8,9,10};
    func(A);
 
    std::cin.get();
 
    return 0;
}
1
castaway
Эксперт С++
4916 / 3024 / 370
Регистрация: 10.11.2010
Сообщений: 11,081
Записей в блоге: 10
Завершенные тесты: 1
20.05.2013, 00:03 #15
Ну тут подходов много.. Можно определить глобальную константу/макрос, можно передать параметром, можно на удачу писать вручную)
Миллионы функций с массивом в параметре говоришь?)... Таких ср*ным веником гнать надо))
1
20.05.2013, 00:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.05.2013, 00:03
Привет! Вот еще темы с ответами:

Функция, возвращающая указатель на двумерный массив - C++
Добрый день! Столкнулся с конструкцией которую раньше не видел, и не до конца понимаю что это и как работает: #include &lt;stdio.h&gt; ...

Двумерный массив. Функция возвращает мусор - C++
Добрый день. Необходимо сгенерировать матрицу и заполнить ее. Написал вот такую функцию float** GenerateNaturalNumbers(int...

Функция выводить на печать одномерный и двумерный массив - C++
Написать функции для печати одномерного и двумерных массивов. #include &lt;iostream&gt; #include &lt;Windows.h&gt; using namespace std; ...

Функция, которая аннулирует двумерный динамический массив - C++
Здравствуйте! Подскажите пожалуйста функцию которая аннулирует двумерный динамический массив. Заранее благодарна.


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.