Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.05.2010, 23:06   #1
Spandei
 
Регистрация: 11.05.2010
Сообщений: 3
По умолчанию Передача в функцию двумерного массива структур

Так создаю этот самый массив и записываю в него данные:

Код:
struct cell** p;
	p=(struct cell**)malloc(height*sizeof(struct cell*));
	for(int i=0;i<height;i++)
	p[i]=(struct cell*)malloc(width*sizeof(struct cell));
	for(int i=0;i<height;i++)
		for(int j=0;j<width;j++)
		{
			p[i][j].leftwall=1;
			p[i][j].upperwall=1;
		}
Не понимаю, как можно передать его в функцию?
Как я понял, нужно передавать указатель и хотя бы одну размерность
Если записывать размерность в переменную - выдает ошибку, а иначе - непонятно как, массив же динамический

Последний раз редактировалось Stilet; 20.05.2010 в 23:11.
Spandei вне форума Ответить с цитированием
Старый 21.05.2010, 01:11   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Передавайте его вместе с размерами.
Пример:
Код:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

struct cell
{
 int leftwall;
 int upperwall;
};

int example(struct cell** p,int height,int width)
{
 int i,j;
 for(int i=0;i<height;i++)
  {
   for(int j=0;j<width;j++)
	 {
	  printf("%d, ",p[i][j].leftwall);
	  printf("%d\n",p[i][j].upperwall);
	  }
   putchar('\n');
  }
}

int main()
{
 struct cell** p;
 int i,j;
 int height=3,width=3;
 p=(struct cell**)malloc(height*sizeof(struct cell*));
 for(int i=0;i<height;i++)
  p[i]=(struct cell*)malloc(width*sizeof(struct cell));
	
 for(i=0;i<height;i++)
   for(j=0;j<width;j++)
	{
	  p[i][j].leftwall=1;
	  p[i][j].upperwall=1;
	}
  
  example(p,height,width);
  
 for(i=0; i<height; i++)
  free(p[i]);
 free(p);  
  
 getch(); 
 return 0;    
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача двумерного массива в функцию Megapixar Общие вопросы C/C++ 12 01.04.2010 16:04
Передача двумерного динамического массива в метод Дырдин Общие вопросы C/C++ 1 19.03.2010 09:45
передача массива в функцию JOFRIF Общие вопросы C/C++ 8 02.08.2009 12:46
Передача массива структур в функцию, conio.h, и графика. jojahti Общие вопросы C/C++ 1 01.08.2009 21:35
Передача двумерного массива аля матрицы из функции bondik Общие вопросы C/C++ 1 20.05.2009 15:46