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

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

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

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

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

Здравствуйте, Друзья.
Скажите пожалуйста - из функции одномерный массив можно передать в функцию main() или нет? Если да - как.
За ранее благодарю Вас.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Avazart
Эксперт С++
7115 / 5292 / 273
Регистрация: 10.12.2010
Сообщений: 23,381
Записей в блоге: 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
551 / 504 / 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
Заблокирован
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
Заблокирован
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++
C++ Шаблон с переменным числом аргументов, и возвращаемое значение функции
C++ Тип void как возвращаемое значение функции: что он такое, зачем он нужен, где, когда и как его использовать?
Возвращаемое значение C++

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

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

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