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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.81
OdessaNA
19 / 19 / 0
Регистрация: 10.01.2011
Сообщений: 241
#1

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

06.08.2012, 23:57. Просмотров 2030. Ответов 7
Метки нет (Все метки)

Здравствуйте, Друзья.
Скажите пожалуйста - из функции одномерный массив можно передать в функцию main() или нет? Если да - как.
За ранее благодарю Вас.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Avazart
7044 / 5221 / 259
Регистрация: 10.12.2010
Сообщений: 22,944
Записей в блоге: 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
550 / 503 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
07.08.2012, 00:17     Возвращаемое значение функции - массив #3
Цитата Сообщение от OdessaNA Посмотреть сообщение
Здравствуйте, Друзья.
Скажите пожалуйста - из функции одномерный массив можно передать в функцию main() или нет? Если да - как.
За ранее благодарю Вас.
зачем нужно скажи, тогда можно дельный совет дать. а так - просто куски *овно-кода предлоижть пожевать.
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
07.08.2012, 00:47     Возвращаемое значение функции - массив #4
Цитата Сообщение от OdessaNA Посмотреть сообщение
Здравствуйте, Друзья.
Скажите пожалуйста - из функции одномерный массив можно передать в функцию main() или нет? Если да - как.
За ранее благодарю Вас.
std::vector — вот так.
alkagolik
1511 / 617 / 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
1511 / 617 / 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     Возвращаемое значение функции - массив
Ответ Создать тему
Опции темы

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