таблица структур в аргументе функции

0

это моя структура:

    struct obcyObiekt{
float x;
float y;
bool alive;
};

в основном я создаю таблицу структуры

obcyObiekt obcy[15];

У меня нет идеи, как добавить аргумент struct table, coz:

void initObcych2(struct obcyObiekt &obcy[15] )

в основном

initObcych2(obcy[15]);
std::cout<<obcy[1].x;

doesnt работает вообще :( всегда будет 16 obcy, поэтому я создал таблицу этого

  • 2
    Изменение основного initObcych2(obcy[15]); это initObcych2(obcy);
  • 1
    Если вы хотите 16, почему вы выделяете 15?
Показать ещё 1 комментарий
Теги:

2 ответа

0
Лучший ответ

Если вы хотите, чтобы подпись функции сохраняла размер массива как часть безопасности типа:

void initObcych2( obcyObiekt (&obcy)[16])

Этот метод будет принимать только массив из 16 элементов типа obcyObiekt, имя переменной параметра будет obcy.

0

Кажется, функция initObcych2 используется для инициализации элементов массива

obcyObiekt obcy[15];

В этом случае функция может быть объявлена как

void initObcych2( obcyObiekt obcy[], size_t n );

и называется

initObcych2( obcy, 15 );

Или вы можете объявить функцию как

void initObcych2( obcyObiekt ( &obcy )[15] );

и назовите его

initObcych2( obcy );

Однако первое объявление функции более гибкое, потому что вам не нужно будет менять объявление функции в случае, когда размер массива будет изменен и его можно будет вызывать для массивов разных размеров.

Что касается этой записи, которую вы показали

void initObcych2(struct obcyObiekt &obcy[15] )

когда

struct obcyObiekt &obcy[15] 

представляет собой массив из 15 ссылок на объекты типа struct obcyObiekt. C++ позволяет объявлять массивы ссылок. Он позволяет объявить ссылку на массив вроде

struct obcyObiekt ( &obcy )[15] 

Ещё вопросы

Сообщество Overcoder
Наверх
Меню