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

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

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

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

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

Здравствуйте, Друзья.
Скажите пожалуйста - из функции одномерный массив можно передать в функцию main() или нет? Если да - как.
За ранее благодарю Вас.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.08.2012, 23:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Возвращаемое значение функции - массив (C++):

Возвращаемое значение функции - указатель на массив. КАК это записать? - C++
Функция заполняет массив. например (кусок проги) .... int mas; int fun() { заполнила массив

Возвращаемое значение функции - C++
void tokenize(string str_translate){ char char_translate; strcpy(char_translate, str_translate.c_str()); // string to char* ...

Возвращаемое значение функции - C++
Здарвствуйте. Моя задача состоит в написании следующей программы: вычислить среднее арифметическое значение элементов матрицы W(L,L),...

Возвращаемое значение функции - C++
array& array::operator = (const array &q) { if (this != &q) { delete s; s=new int; for(len=0;len<q.len;s=q.s,len++) ...

Возвращаемое значение функции - C++
Здравствуйте Я тут новенький. Очень трудно у вас проходить регистрацию. У меня вопрос по С++ Компилятор: Code Blocks ...

Возвращаемое значение функции - C++
Добрый день. Есть функция: TextString InfoBox::name(unsigned int i) const { if(i<this->count()) { TextLabel...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Avazart
Эксперт С++
7148 / 5325 / 276
Регистрация: 10.12.2010
Сообщений: 23,566
Записей в блоге: 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, на новых компиляторах не пойдет.
Kojt
73 / 69 / 2
Регистрация: 19.05.2010
Сообщений: 167
07.08.2012, 08:35 #8
Цитата Сообщение от alkagolik Посмотреть сообщение
Jupiter, да сам не знаю что это, обнаружил давно. Время жизни массивов, объявленных в функциях равно времени жизни программы. При неоднократных вызовах функции виртуальные адреса не меняются, индексная адресация при обращении не подходит
Разве такое поведение в стандарте описано? выделенная память в стеке при выходе из области видимости очищается. Может быть это фишка конкретного компилятора? Но определенно так делать не стоит.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.08.2012, 08:35
Привет! Вот еще темы с ответами:

Возвращаемое значение virtual функции - C++
В инструкции указанно следующее virtual int getHost() создаю у себя в классе int getHost(){ return ?? }

Неправильное возвращаемое значение функции time - C++
что за бардак мне time возвращает??? что типа щас 10 месяц, а год вообще 114 :D пишу так: time_t t; time(&amp;t); tm tt; ...

Как присвоить возвращаемое значение функции переменной? - C++
double sine(int index, int frequency) { return (100*sin(index*frequency)); } вопрос: как присвоить возвращаемое значение...

Шаблон с переменным числом аргументов, и возвращаемое значение функции - C++
Здравствуйте! Использую С++11. Хочу возвращать элементы кортежа пытаюсь так, auto Deserialize(unsigned long long i) -&gt;...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
07.08.2012, 08:35
Ответ Создать тему
Опции темы

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