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

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

Восстановить пароль Регистрация
 
djess92
0 / 0 / 0
Регистрация: 31.05.2010
Сообщений: 37
02.04.2011, 19:55     Передать двумерный массив в функцию #1
подскажи те как передать двумерный массив в функцию?)
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Байт
 Аватар для Байт
13964 / 8795 / 1223
Регистрация: 24.12.2010
Сообщений: 15,930
02.04.2011, 20:33     Передать двумерный массив в функцию #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Один из способов
C
1
2
3
4
5
6
7
F(int a[10][20])
{
}
main()
{ int b[10][20];
    F(b);
}
Другой
C
1
2
3
4
5
6
7
8
9
F(int **a)
{
}
main()
{ int **b;
    b = (int**)malloc(10*sizeof(int *));
    for(j=0; j<20; j++) b[j] = (int *)malloc(20*sizeof(int));
    F(b);
}
Во втором случае массив может быть диагональным или даже "зубчатым"
C
1
2
3
   for(j=0; j<20; j++) b[j] = (int *) malloc (2*j*sizeof(int));
     // или
  for(j=0; j<20; j++) b[j] = (int *) malloc ((20+j%4)*sizeof(int));
SecretSilent
 Аватар для SecretSilent
76 / 77 / 2
Регистрация: 16.02.2010
Сообщений: 576
02.04.2011, 20:36     Передать двумерный массив в функцию #3
можно использовать что-то вроде этого:
C++
1
2
3
4
5
6
7
8
void f(int *a,int Row,int Col){}
 
int main()
{
  int a[2][2];
  f(&a[0][0],2,2);
  return 0;
}
Байт
 Аватар для Байт
13964 / 8795 / 1223
Регистрация: 24.12.2010
Сообщений: 15,930
02.04.2011, 20:53     Передать двумерный массив в функцию #4
Цитата Сообщение от SecretSilent Посмотреть сообщение
можно использовать что-то вроде этого:
C++
1
2
3
4
5
6
7
8
void f(int *a,int Row,int Col){}
 
int main()
{
  int a[2][2];
  f(&a[0][0],2,2);
  return 0;
}
Оно наверное и можно.
Но.
Всякий ли транслятор спокойно примет F(*a...) и f(&a[0][0]). Примет, конечно, но.
Реализация функции f должна работать с линейной интерпретацией массива. Т,е, вместо a[i][j] писать
a[i*Row + j], что не совсем удобно.
Конечно, можно все многомерные массивы представлять линейными и самим вычислять индексы. Но тогда зачем в языке многомерные массивы? Хотя, многомерные массивы - не самое лучшее, что есть в Си.
Ариман
20 / 20 / 1
Регистрация: 18.09.2010
Сообщений: 28
02.04.2011, 21:17     Передать двумерный массив в функцию #5
можно и так
C++
1
2
3
4
5
6
7
const int size=5;
F(int[][size])
void main()
{
int mas[size][size]={0};
F(mas);
}
форма записи обязательна в прототипе F(mas[][size]) где size это конкретный размер столбиков необязательно константа,хотя с ней работать удобней
Yandex
Объявления
02.04.2011, 21:17     Передать двумерный массив в функцию
Ответ Создать тему
Опции темы

Текущее время: 09:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru