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

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

Войти
Регистрация
Восстановить пароль
 
angryjack93
7 / 3 / 1
Регистрация: 04.11.2012
Сообщений: 218
#1

возвращение массива структур - C++

28.11.2012, 17:22. Просмотров 891. Ответов 7
Метки нет (Все метки)

вопрос - как вернуть из функции массив структур??
вот у меня есть такой огрызок кода:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
struct CUSTOMVERTEX {
    float x, y, z, rhw;
    DWORD color;
};
 
CUSTOMVERTEX Vertex[6] = 
{
    {450.0f, 200.0f, 1.0f, 1.0f, 0x00000000},
    {550.0f, 200.0f, 1.0f, 1.0f, 0x00000000},
    {550.0f, 300.0f, 1.0f, 1.0f, 0x00000000},
    {450.0f, 200.0f, 1.0f, 1.0f, 0x00000000},
    {450.0f, 300.0f, 1.0f, 1.0f, 0x00000000},
    {550.0f, 300.0f, 1.0f, 1.0f, 0x00000000},
}
и при передаче одной из функций, она должна изменять значение x на пять. Как это реализовать??
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2012, 17:22     возвращение массива структур
Посмотрите здесь:

Возвращение функцией значения динамического массива структур - C++
Auto readfile() { ifstream file(file); int i = 0, color; Auto *A = new Auto; while (!file.eof()) { file >> A.name >>...

Как реализовать передачу массива в функцию и возвращение массива из функции? - C++
Нужно сделать отдельный блок программы в виде функции, которая в качестве аргумента должна принимать массив и возвращать массив после...

Возвращение массива из функции - C++
Почему такой код выводит массив корректно. int* Input() { int b = { 10,20,30 }; return b; } int main() {

Возвращение массива из функции - C++
Как вернуть массив из функции? double* Zapolnenie(string Name) { if (Name == "A") { const int number1 = 10; double A; ...

Возвращение массива из функции - C++
Нужно вернуть массив типа int из функции Как я понимаю сделать это можно только с помощью указателей У меня это получилось но так...

Возвращение номера елемента массива - C++
Написать функцию возвращающую ссылку на элемент глобального массива. Подразумевается вывести элемент массива под его номером с помощью...

Возвращение многомерного массива из функции - C++
Как вернуть многомерный массив из функции для обычного массива c использованием указателей это выглядит так void function(int*); //...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,922
Записей в блоге: 1
28.11.2012, 17:26     возвращение массива структур #2
передавай массив в функцию, и она сможет менять значения массива.
gray_fox
What a waste!
1257 / 1140 / 55
Регистрация: 21.04.2012
Сообщений: 2,362
Завершенные тесты: 3
28.11.2012, 17:28     возвращение массива структур #3
Цитата Сообщение от angryjack93 Посмотреть сообщение
как вернуть из функции массив структур??
Никак, можно вернуть только ссылку на массив, или какой-нибудь контейнер (std::array, std::vector и пр.).
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,922
Записей в блоге: 1
28.11.2012, 17:33     возвращение массива структур #4
Цитата Сообщение от gray_fox Посмотреть сообщение
Никак
??? А так?
C++
1
2
3
 void foo(CUSTOMVERTEX arg[]){
      arg[0].x=3.141592;
      }
Или, что то же самое, по указателю?
gray_fox
What a waste!
1257 / 1140 / 55
Регистрация: 21.04.2012
Сообщений: 2,362
Завершенные тесты: 3
28.11.2012, 17:36     возвращение массива структур #5
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
?? А так?
я подумал про return.
angryjack93
7 / 3 / 1
Регистрация: 04.11.2012
Сообщений: 218
29.11.2012, 07:44  [ТС]     возвращение массива структур #6
А вот я передаю так:
C++
1
MovingUp(&Vertex);
и функция у меня такая:
C++
1
2
3
4
5
6
7
8
9
VOID MovingUp(CUSTOMVERTEX Vertex_1[])
{  
     Vertex_1[1] -> y -= 5;
     Vertex_1[2] -> y -= 5;
     Vertex_1[3] -> y -= 5;
     Vertex_1[4] -> y -= 5;
     Vertex_1[5] -> y -= 5;
     Vertex_1[6] -> y -= 5;
}
здесь, конечно, я не стал возвращать (не понадобилось), но все же тут чего-то неправильно, и я не пйму чего. Объясните!

Добавлено через 10 часов 46 минут
что, никто не поможет?
gray_fox
What a waste!
1257 / 1140 / 55
Регистрация: 21.04.2012
Сообщений: 2,362
Завершенные тесты: 3
29.11.2012, 07:49     возвращение массива структур #7
Цитата Сообщение от angryjack93 Посмотреть сообщение
MovingUp(&Vertex);
Так наверное:
C++
1
MovingUp(Vertex);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2012, 08:14     возвращение массива структур
Еще ссылки по теме:

Возвращение массива из функции-шаблона - C++
Есть массив int iArray = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; есть шаблон функция template< typename T > T * MySwap(const T...

Возвращение двумерного массива из функции - C++
Здравствуйте, написал пробник, чтобы освоить метод возвращения из функции двумерного массива (указателя). Что-то не заладилось с двумерным....

Возвращение из функции массива указателей - C++
Здравствуйте. Мне нужно вернуть из функции массив указателей. Внутри функции создаю динамический массив указателей, в который помещаю...

Возвращение двумерного массива из функции - C++
int function (int x, const int r, const int c) //работает только если указана размерность массива x { int max, i, maxelrownum = 0; ...

Возвращение из функции значения массива - C++
Есть функция , она выполнила свою работу , теперь результат в виде массива нужно отправить в основную программу , незнаю как это сделать...


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

Или воспользуйтесь поиском по форуму:
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
29.11.2012, 08:14     возвращение массива структур #8
angryjack93, массивы передаются по указателям. Если количество элементов не принято константным, то остаётся ещё два варианта соглашения о его передаче: через специальную величину целого беззнакового типа гарантированно достаточной разрядности (лучше всего size_t) и с помощью терминального элемента самого массива, в этом случае выбирается некоторое специальное значение элемента, которое будет обозначать конец массива, последний элемент должен иметь это значение.

Добавлено через 8 минут
Цитата Сообщение от gray_fox Посмотреть сообщение
я подумал про return.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
struct Vector
{
 doble x, y, z;
};
Vector *f(size_t n)
{
 Vector *Result=new Vector [n];
 Vector *p;
 for (p=Result+n-1; p>=Result; --p)
 {
  p->x=sin(p-Result);
  p->y=cos(((double)(p-Result))/10.0);
  p->y=sin((p-Result)*10);
 }
 return Result;
}
. Функция f возвращает массив структур по указателю. И именно с помощью return.
Yandex
Объявления
29.11.2012, 08:14     возвращение массива структур
Ответ Создать тему
Опции темы

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