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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 147, средняя оценка - 4.96
shtopor20
33 / 22 / 0
Регистрация: 21.05.2010
Сообщений: 301
#1

Как передать двухмерный массив в функцию? - C++

24.11.2011, 23:14. Просмотров 25552. Ответов 7
Метки нет (Все метки)

Подскажите пожалуйста, как в функцию передать двухмерный массив? Пробовал так:
C++
1
2
3
4
5
6
7
8
9
void FuncArr(int** arr){ 
arr[1][2] = 111111; 
} 
 
void main(void){ 
int arr[255][255]; 
FuncArr(arr); 
cout << arr[1][2] << endl; 
}
Но выдает ошибку:
невозможно преобразовать параметр 1 из 'int [255][255]' в 'int **'
Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.11.2011, 23:14
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как передать двухмерный массив в функцию? (C++):

Как в функцию передать параметр - двухмерный массив - C++
void max_el() { int i,j,max; for ( i=1 ; i&lt;=n; i++) for ( j=1; j&lt;=m; j++) //nahodim maksimalnii element...

как передать в функцию двухмерный динамический массив по ссылке - C++
как передать в функцию двухмерный динамический массив по ссылке?

Передать двухмерный массив в функцию - C++
Допустим, у меня есть двухмерный массив символов char level = { &quot; &quot;, &quot; &quot;, &quot; &quot;, ...

Передать в функцию динамический двухмерный массив с динамическими размерами - C++
Как передать динамический двухмерный массив с динамическими размерами? #include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; ...

Как передать двухмерный массив - C++
Примеров передачи много, но как быть в моем сучае, если я определяю функцию как: float det(float* M, int n) { if (n == 1) {...

Не могу разобраться как передать корректно передать массив из функции в функцию - C++
//--------------------------------------------------------------------------- #pragma hdrstop ...

7
Thinker
Эксперт С++
4231 / 2205 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
24.11.2011, 23:15 #2
Так можно было бы передать массив ссылок, а в вашем случае несколько вариантов, например

void FuncArr(int arr[255][255])
1
shtopor20
33 / 22 / 0
Регистрация: 21.05.2010
Сообщений: 301
24.11.2011, 23:20  [ТС] #3
Отлично, как раз перед этим в сети нашел еще пару решений но все кривые, спасибо большое)))
0
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
24.11.2011, 23:25 #4
C++
1
2
3
4
5
6
7
8
9
void FuncArr(int* arr, int rowlen){ 
arr[ 1 * rowlen + 2] = 111111;
} 
 
void main(void){ 
int arr[255][255]; 
FuncArr(*arr, 255); 
cout << arr[1][2] << endl; 
}
0
shtopor20
33 / 22 / 0
Регистрация: 21.05.2010
Сообщений: 301
25.11.2011, 02:06  [ТС] #5
Народ, пока тему не закрыли хотел спросить а как дсделать тоже самое с двухмерным динамическим массивом, у меня он почему то лезит куда то не туда, я его создаю, float **Massiv = new float*[255];
все компилируется как надо, но при попытки в него что то записать пишет "Нарушение рпав доступа при записи"

Добавлено через 49 минут
Все вссем спс, разобрался
0
bam32
1 / 1 / 0
Регистрация: 10.11.2011
Сообщений: 48
25.11.2011, 18:18 #6
Парни помогите, чего-то я не догоняю!
у меня есть функция kol она считает сколько столбцов с нулевым элементом встречается и плюсует в переменную g!

если делать не через функцию все работает.
у меня в g выводит 0!(если через функцию делать)
сорри за код я его не форматировал!

где допустил касяк?

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
52
53
54
#include "stdafx.h"
#include <iostream>
using namespace std;
 
int kol (int A[100][100],int n,int m,int g){ // подсчет нулевых элементов
 
for ( int j = 0; j < n; j++ ){
  for ( int i = 0; i < m; i++ ){
 
      if ( A[i][j] == 0 ){
         g++;
      }
   }
}
return 0;
}
 
 
 
int main(){
const int k=100;    
int n,m;
int g=0;
int A[k][k];
int i,j;
setlocale(LC_ALL, "rus");
cout<<"Введите размеры матрицы "<<endl;
cin >>n>>m;
 
for(i=0;i<n;i++)
    for(j=0;j<m;j++){
        cout<<"a["<<i<<","<<j<<"] = ";
            cin>>A[i][j];   
        
                    }
 
cout << "Вот Ваша матрица:" << endl << endl;
 for (int i=0;i<n;i++){
    for(int j=0; j<m;j++)
        cout<<"  "<< A[i][j]<< " ";
            cout<<endl;     
                    }
 
 
 
 
  
 kol(A,n,m,g); //вызов функции!
 cout<<"количество столбцов, содержащих хотя бы один нулевой элемент: "<<g<<endl;
    
 system("pause");
return 0;
 
}
0
Agent Smith
40 / 40 / 9
Регистрация: 24.11.2012
Сообщений: 200
24.11.2012, 15:34 #7
>> bam32
насколько я помню, функция не может изменять переданные ей аргументы. ты же пытаешься изменить g. попробуй в main инициализировать g=5 например и просмотри, что тебе выведет программа. если 5, значит я прав, если 0, значит ошибка в другом
0
alsav22
5434 / 4829 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.11.2012, 17:16 #8
Нужно g по ссылке передавать:
C++
1
2
int kol (int A[100][100],int n,int m,int &g)
{}
Добавлено через 4 минуты
Или так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int kol (int A[100][100],int n,int m,int g){ // подсчет нулевых элементов
 
for ( int j = 0; j < n; j++ ){
  for ( int i = 0; i < m; i++ ){
 
      if ( A[i][j] == 0 ){
         g++;
      }
   }
}
return g;
}
...
g = kol(A,n,m,g); //вызов функции!}
0
24.11.2012, 17:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.11.2012, 17:16
Привет! Вот еще темы с ответами:

Передать в поток двухмерный массив - C++
Здравствуйте! хочу передать в поток указатель на двухмерный массив, чтобы в потоке внести в него данные а выводить из основной...

Как передать массив структур в функцию в качестве параметра, чтобы изменения в функции меняли исходный массив? - C++
Допустим есть структура struct Base { int a; int b; int c; }; В основном методе main() объявим массив...

Как передать массив в функцию? - C++
передайте, пожалуйста, массив у функцию #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; using...

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


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

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

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