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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.02.2013, 11:21   #1
nubak
Пользователь
 
Регистрация: 26.01.2013
Сообщений: 18
Вопрос Передача массива структур в функцию (С++)

Нужно передать динамический массив структур в функцию заполнения массива. Однако компилятор ругается на указатель.
Код:
	void zapis(int n1,bibl::bib megamass[])
{
	for(int i=0;i<=n1;i++)
	{
		cout<<"Введите автора";
		cin>>megamass[i].author;
		cout<<"Ведите название книги";
		cin>>megamass[i].title;
		cout<<"Введите год издания";
		cin>>megamass[i].god_izd;
		cout<<"Введите издателя";
		cin>>megamass[i].izdat;
	}
}
int _tmain(int argc, _TCHAR* argv[])
{
	setlocale(LC_ALL,"rus");
	int n;
	cout<<"Введите количество книг";
	cin>>n;
	bibl megamass(n);
	bibl::bib *pMegamass=&megamass;
	zapis(n, pMegamass);
nubak вне форума Ответить с цитированием
Старый 24.02.2013, 12:21   #2
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Код:
bibl megamass(n);
это не массив, а один объект типа bibl. Скорее всего массив внутри (ты пишешь потом bibl::bib, мне остается только догадываться что и как, ведь ни описания ошибок ни кода целиком ты не приводишь).

Код:
bibl::bib *pMegamass=&megamass;
а тут ты создаешь указатель на объект типа bibl::bib, но исопльзуешь его как указатель на bibl.

Код:
void zapis(int n1,bibl::bib megamass[])
ну и это тоже чето не то.

Цитата:
Передача массива структур в функцию (С++)
осуществляется точно также, как и передача любого другого массива в функцию.

-----------добавил
Код:
#include <iostream>
struct A { int a, b; };
void f(A* a, const int n) {
  for (int i = 0; i < n; ++i) 
    a[i].a = a[i].b = i;
}
void out(const A* a, const int n) {
  for (int i = 0; i < n; ++i) 
    std::cout << a[i].a << " " << a[i].b << std::endl;
}
int main() {
  const int n = 10;
  A *a = new A[n];
  
  f(a, n);
  out(a, n);
  
  delete[] a;
}
держи пример

Последний раз редактировалось rrrFer; 24.02.2013 в 12:30.
rrrFer вне форума Ответить с цитированием
Старый 24.02.2013, 13:03   #3
nubak
Пользователь
 
Регистрация: 26.01.2013
Сообщений: 18
По умолчанию

Остальная часть кода в другом файле, который я подключаю.
nubak вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача массива в функцию и возврат массива из функции Gstar C# (си шарп) 6 14.10.2012 00:38
Передача массива в функцию Garmon Общие вопросы C/C++ 6 23.09.2012 08:03
Произведение элементов массива в функции (передача массива в функцию) (Delphi) Toxa16 Помощь студентам 1 23.04.2011 04:42
Передача в функцию двумерного массива структур Spandei Общие вопросы C/C++ 1 21.05.2010 01:11
Передача массива структур в функцию, conio.h, и графика. jojahti Общие вопросы C/C++ 1 01.08.2009 21:35