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

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

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

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

28.11.2012, 17:22. Просмотров 944. Ответов 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 на пять. Как это реализовать??
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2012, 17:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос возвращение массива структур (C++):

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

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

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

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

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

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

7
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,926
Записей в блоге: 1
28.11.2012, 17:26 #2
передавай массив в функцию, и она сможет менять значения массива.
0
gray_fox
What a waste!
1521 / 1226 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
28.11.2012, 17:28 #3
Цитата Сообщение от angryjack93 Посмотреть сообщение
как вернуть из функции массив структур??
Никак, можно вернуть только ссылку на массив, или какой-нибудь контейнер (std::array, std::vector и пр.).
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,926
Записей в блоге: 1
28.11.2012, 17:33 #4
Цитата Сообщение от gray_fox Посмотреть сообщение
Никак
??? А так?
C++
1
2
3
 void foo(CUSTOMVERTEX arg[]){
      arg[0].x=3.141592;
      }
Или, что то же самое, по указателю?
1
gray_fox
What a waste!
1521 / 1226 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
28.11.2012, 17:36 #5
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
?? А так?
я подумал про return.
0
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 минут
что, никто не поможет?
0
gray_fox
What a waste!
1521 / 1226 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
29.11.2012, 07:49 #7
Цитата Сообщение от angryjack93 Посмотреть сообщение
MovingUp(&Vertex);
Так наверное:
C++
1
MovingUp(Vertex);
0
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.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2012, 08:14
Привет! Вот еще темы с ответами:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
8
Yandex
Объявления
29.11.2012, 08:14
Ответ Создать тему
Опции темы

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