powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Возврат массива из функции в функцию в виде аргументов
11 сообщений из 11, страница 1 из 1
Возврат массива из функции в функцию в виде аргументов
    #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
Возврат массива из функции в функцию в виде аргументов
    #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
Возврат массива из функции в функцию в виде аргументов
    #38558431
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vargantможно ли возвратить данный массив как аргументы?
Нет. Функция всегда возвращает одно значение. Это Вам не lua какой-нибудь.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Возврат массива из функции в функцию в виде аргументов
    #38558463
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovVargantможно ли возвратить данный массив как аргументы?
Нет. Функция всегда возвращает одно значение. Это Вам не lua какой-нибудь.


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

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

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

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


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