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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 108, средняя оценка - 4.74
dimcoder
Полярный
458 / 431 / 67
Регистрация: 11.09.2011
Сообщений: 1,129
#1

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

24.09.2011, 13:08. Просмотров 14318. Ответов 13
Метки нет (Все метки)

Здравствуйте, появился новый вопрос на тему указателей: как передать двумерный массив в функцию ну и для проверки модифицировать его.
Написал следующую программу:

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
#include <iostream.h>
#include <conio.h>
 
void matSqr (int*, int);
 
main ()
{
   int b[10][10];
   int a = 2;
 
   matSqr(b, a);
 
   for (int i = 0; i < a; i++)
      for (int j = 0; j < a; j++)
     cout << b[i][j] << ' ';
 
   getch();
 
   cout << endl << endl;
 
   return 0;
}
 
void matSqr (int (*xPtr)[10], int n)
{
   for (int i = 0; i < n; i++)
      for (int j = 0; j < n; i++)
     xPtr[i][j] *= 2;
}
Компилер "Cannot convert 'int[10] *' to 'int *'". Битый час бьюсь, но исправить не могу. Пожалуйста, объясните чайнику что к чему, ну и в общем как передаются 2 мерные и >мерные массивы в функции.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
24.09.2011, 13:14     Передача двумерного массива в функцию #2
C++
1
void matSqr(int **xPtr, int n)
Добавлено через 45 секунд
В догонку: что за бред у вас в 29 строчке?

Добавлено через 31 секунду
Ну и про поиск по форуму не забываем, тема поднималась не один раз.

Добавлено через 1 минуту
И зачем в функции matSqr n присваивается значение 1, а передается 2?
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
24.09.2011, 13:18     Передача двумерного массива в функцию #3
soon,
C
1
void matSqr(int **xPtr, int n)
для статических массивов работать не будет, попробуйте скомпилить:
C
1
2
int a[10][10], **p;
p = a;
dimcoder
Полярный
458 / 431 / 67
Регистрация: 11.09.2011
Сообщений: 1,129
24.09.2011, 13:24  [ТС]     Передача двумерного массива в функцию #4
SOON, thanks, бред исправил, просто моей главной задачей была передеча двумерного массива, а всё остальное потом. Исправил, ошибку всё равно выдаёт, только другую. Указывает на место вызова функции. Как изменить вызов функции? Что точно передать? Если вас не затруднит: расскажите об этом поподробнее плиз.
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
24.09.2011, 13:24     Передача двумерного массива в функцию #5
dimcoder, замените прототип matSqr на
C
1
void matSqr(int (*)[10], int);
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
24.09.2011, 13:26     Передача двумерного массива в функцию #6
Действительно. Я больше динамические использовал.
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
24.09.2011, 13:26     Передача двумерного массива в функцию #7
и в 27 строке for (int j = 0; j < n; i++) не i++ а j++
dimcoder
Полярный
458 / 431 / 67
Регистрация: 11.09.2011
Сообщений: 1,129
24.09.2011, 13:31  [ТС]     Передача двумерного массива в функцию #8
Цитата Сообщение от Net_Wanderer Посмотреть сообщение
dimcoder, замените прототип matSqr на
C
1
void matSqr(int (*)[10], int);
Заменил. ОШИПКА! На что конкретно заменить вызов функции? Я пишу: matSqr(b, a);
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
24.09.2011, 13:33     Передача двумерного массива в функцию #9
Цитата Сообщение от dimcoder Посмотреть сообщение
Заменил. ОШИПКА! На что конкретно заменить вызов функции? Я пишу: matSqr(b, a);
Текст ошибки?
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
24.09.2011, 13:35     Передача двумерного массива в функцию #10
Не вызов(про него вообще ни слова не было), а прототип, в вашем коде он находится в строке #4, строку #24 оставьте как в вашем первом посте.
dimcoder
Полярный
458 / 431 / 67
Регистрация: 11.09.2011
Сообщений: 1,129
24.09.2011, 13:45  [ТС]     Передача двумерного массива в функцию #11
YAHOOOOOO! Спасибо!
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
24.09.2011, 13:47     Передача двумерного массива в функцию #12
Массив не инициализирован, в строке
C
1
xPtr[i][j] *= 2;
xPtr[i][j] содержит мусор который умножается на два, так что результат непредсказуем.
dimcoder
Полярный
458 / 431 / 67
Регистрация: 11.09.2011
Сообщений: 1,129
24.09.2011, 13:59  [ТС]     Передача двумерного массива в функцию #13
Цитата Сообщение от Net_Wanderer Посмотреть сообщение
Массив не инициализирован, в строке
C
1
xPtr[i][j] *= 2;
xPtr[i][j] содержит мусор который умножается на два, так что результат непредсказуем.
Да, не инициализирован, я этим сейчас и занимаюсь. В общем, не проблема!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.09.2011, 14:37     Передача двумерного массива в функцию
Еще ссылки по теме:
Передача двумерного массива в функцию C++
Передача двумерного массива в функцию C++
C++ Передача двумерного массива в функцию
C++ Передача в функцию двумерного массива
Передача двумерного массива в функцию C++

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

Или воспользуйтесь поиском по форуму:
rangerx
1932 / 1541 / 141
Регистрация: 31.05.2009
Сообщений: 2,911
24.09.2011, 14:37     Передача двумерного массива в функцию #14
Цитата Сообщение от dimcoder Посмотреть сообщение
как передать двумерный массив в функцию ну и для проверки модифицировать его
Вот так(1-ый вариант)
Yandex
Объявления
24.09.2011, 14:37     Передача двумерного массива в функцию
Ответ Создать тему
Опции темы

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