Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Возврат массива из функции в функцию в виде аргументов / 11 сообщений из 11, страница 1 из 1
12.02.2014, 13:07
    #38558376
Vargant
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат массива из функции в функцию в виде аргументов
Добрый день.

Есть функция принимающая, например, 3 аргумента
Код: plaintext
1.
void state(short t, short f, short o) {



Есть функция, которая принимает указатель на массив, заполняет значения и возвращает его обратно.
Код: plaintext
1.
2.
3.
short level[3];

short* getLevelInfo(short level[]);



Вопрос, можно ли возвратить данный массив как аргументы? Например, как то - так
Код: plaintext
1.
state(getLevelInfo(level));


Чтобы первый аргумент для state (t) был level[0] и т.д.

Заранее благодарен за любую помощь!
...
Рейтинг: 0 / 0
12.02.2014, 13:46
    #38558426
Анатолий Широков
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат массива из функции в функцию в виде аргументов
Vargant,

если у нас нет ограничения и вы можете менять сигнатуры, то можно все детерминировать используя современный C++

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
void state(const std::array<short, 3> &a) {
   // use a[0], a[1], a[2]
}

std::array<short, 3> getLevelInfo() {
   std::array<short, 3> a = {1, 2, 3};
   return a; 
}

...
state(getLevelIfno());



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

Код: plaintext
1.
2.
3.
short level[3];
getLevelInfo(level);
state(level[0], level[1], level[2]);




если можно менять сигнатуру, то можно state оформить как

Код: plaintext
1.
void state(short level[]);



и уже работать с массивом внутри state.
...
Рейтинг: 0 / 0
12.02.2014, 13:49
    #38558431
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат массива из функции в функцию в виде аргументов
Vargantможно ли возвратить данный массив как аргументы?
Нет. Функция всегда возвращает одно значение. Это Вам не lua какой-нибудь.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
12.02.2014, 14:10
    #38558463
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат массива из функции в функцию в виде аргументов
Dimitry SibiryakovVargantможно ли возвратить данный массив как аргументы?
Нет. Функция всегда возвращает одно значение. Это Вам не lua какой-нибудь.


Ну, да, но этим значением может быть массив или сложная структура.
...
Рейтинг: 0 / 0
12.02.2014, 14:22
    #38558480
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат массива из функции в функцию в виде аргументов
MasterZivНу, да, но этим значением может быть массив или сложная структура.
структура - да, массив - нет
...
Рейтинг: 0 / 0
12.02.2014, 14:27
    #38558490
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат массива из функции в функцию в виде аргументов
Anatoly Moskovsky,

std::vector< XXX >
...
Рейтинг: 0 / 0
12.02.2014, 14:41
    #38558511
Alex the coder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат массива из функции в функцию в виде аргументов
Vargant, как Вам уже указали, можете использовать std::array из C++11 или boost::array.
И я бы передавал его по ссылке для модификации, кстати, а не возвращал бы из функции.
...
Рейтинг: 0 / 0
12.02.2014, 14:43
    #38558516
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат массива из функции в функцию в виде аргументов
MasterZivAnatoly Moskovsky,

std::vector< XXX >
Это не массив, а структура.
...
Рейтинг: 0 / 0
12.02.2014, 20:23
    #38559019
chabapok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат массива из функции в функцию в виде аргументов
может так:
Код: plaintext
1.
2.
3.
#define stateArr(short *ptr) state(ptr[0], ptr[1]. ptr[2])
...
stateArr(getLevelInfo(level));
...
Рейтинг: 0 / 0
13.02.2014, 09:50
    #38559385
Vargant
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат массива из функции в функцию в виде аргументов
2Анатолий Широков, сигнатуры нужно оставить.
2chabapok, на заметку взял.

Всем спасибо за комментарии, придется из-за неимения возможности менять определения функций оставить как есть.
...
Рейтинг: 0 / 0
13.02.2014, 11:07
    #38559517
Анатолий Широков
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат массива из функции в функцию в виде аргументов
chabapok,

"вот это не рыба, не заливная рыба... хрену к ней не хватает" (c):

Код: plaintext
1.
#define stateArr(short *ptr) state(ptr[0], ptr[1]. ptr[2])


может вы хотели написать

Код: plaintext
1.
inline void stateArr(shor* ptr) {state(ptr[0], ptr[1]. ptr[2]);}


?
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Возврат массива из функции в функцию в виде аргументов / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]