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

Возвращаемое значение функции - массив - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.81
OdessaNA
 Аватар для OdessaNA
19 / 19 / 0
Регистрация: 10.01.2011
Сообщений: 240
06.08.2012, 23:57     Возвращаемое значение функции - массив #1
Здравствуйте, Друзья.
Скажите пожалуйста - из функции одномерный массив можно передать в функцию main() или нет? Если да - как.
За ранее благодарю Вас.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Avazart
Нарушитель
6954 / 5192 / 256
Регистрация: 10.12.2010
Сообщений: 22,768
Записей в блоге: 17
07.08.2012, 00:05     Возвращаемое значение функции - массив #2
Можно предать указатель на массив и его размер....
C++
1
void func(int a[],const size_t &size){ /*Do Something*/};
C++
1
2
3
4
const size_t size=10;
int A[size];
 
func(A,size);
Если имеется ввиду возврат, то суть таже возвращать указатель...
C++
1
2
3
4
5
int*  func(int a[],size_t &size)
{
 /*Do Something*/ 
return a; 
};
novi4ok
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
07.08.2012, 00:17     Возвращаемое значение функции - массив #3
Цитата Сообщение от OdessaNA Посмотреть сообщение
Здравствуйте, Друзья.
Скажите пожалуйста - из функции одномерный массив можно передать в функцию main() или нет? Если да - как.
За ранее благодарю Вас.
зачем нужно скажи, тогда можно дельный совет дать. а так - просто куски *овно-кода предлоижть пожевать.
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1238 / 987 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
07.08.2012, 00:47     Возвращаемое значение функции - массив #4
Цитата Сообщение от OdessaNA Посмотреть сообщение
Здравствуйте, Друзья.
Скажите пожалуйста - из функции одномерный массив можно передать в функцию main() или нет? Если да - как.
За ранее благодарю Вас.
std::vector — вот так.
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
07.08.2012, 02:45     Возвращаемое значение функции - массив #5
OdessaNA, можно. Если уиндоус, то обязательно не отладочная компиляция.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
 
#define ARRAY_LEN   ( 10 )
 
void* foo( const unsigned size, const unsigned nums ) {
    unsigned arr[ nums ];
 
    return ( void* ) &arr[ 0 ];
}
 
int main() {
 
    unsigned *p = ( unsigned* ) foo( sizeof( unsigned ), ARRAY_LEN );
    unsigned i = 0;
 
    while ( i < ARRAY_LEN ) {
        *p = i;
        ++p, ++i;
    }
 
    --p;
    while ( i-- )
        std::cout << *p-- << ' ';
        std::cout << std::endl;
 
    return 0;
}
Jupiter
07.08.2012, 02:56
  #6

Не по теме:

alkagolik, это что вообще такое? похоже на VLA но как оно живет после выхода из функции?

alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
07.08.2012, 03:36     Возвращаемое значение функции - массив #7
Jupiter, да сам не знаю что это, обнаружил давно. Время жизни массивов, объявленных в функциях равно времени жизни программы. При неоднократных вызовах функции виртуальные адреса не меняются, индексная адресация при обращении не подходит. VLA???

Добавлено через 17 минут
да. vla, на новых компиляторах не пойдет.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.08.2012, 08:35     Возвращаемое значение функции - массив
Еще ссылки по теме:

Неправильное возвращаемое значение функции time C++
Как присвоить возвращаемое значение функции переменной? C++
Возвращаемое значение virtual функции C++
Реакция на возвращаемое значение C++
C++ Возвращаемое значение функции

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

Или воспользуйтесь поиском по форуму:
Kojt
73 / 69 / 2
Регистрация: 19.05.2010
Сообщений: 167
07.08.2012, 08:35     Возвращаемое значение функции - массив #8
Цитата Сообщение от alkagolik Посмотреть сообщение
Jupiter, да сам не знаю что это, обнаружил давно. Время жизни массивов, объявленных в функциях равно времени жизни программы. При неоднократных вызовах функции виртуальные адреса не меняются, индексная адресация при обращении не подходит
Разве такое поведение в стандарте описано? выделенная память в стеке при выходе из области видимости очищается. Может быть это фишка конкретного компилятора? Но определенно так делать не стоит.
Yandex
Объявления
07.08.2012, 08:35     Возвращаемое значение функции - массив
Ответ Создать тему
Опции темы

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