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

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

Войти
Регистрация
Восстановить пароль
 
valeriy007
76 / 21 / 6
Регистрация: 27.10.2014
Сообщений: 420
#1

Функция возвращающая массив - C++

01.07.2015, 15:58. Просмотров 246. Ответов 2
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include "conio.h"
 
int *convertToBin()
{
    int a[5] = { 1, 2, 3, 4, 5};
    return a;
}
 
int main()
{
    int *arr = convertToBin();
 
    for (int i = 0; i < 5; i++)
    {
        std::cout << arr[i] << std::endl;
 
    }
 
    system("pause");
    return 0;
}
Не могу понять где собственно проблема, вроде делал по примерам с интернета(
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.07.2015, 15:58     Функция возвращающая массив
Посмотрите здесь:

Функция, возвращающая массив - C++
Нужно вернуть из функции массив. int F(int a,int* b) { for(int i=0;i&lt;a;i++) *b++; for(int i=0;i&lt;3;i++) printf(&quot;%d\n&quot;, b); ...

Функция, возвращающая массив - C++
Задача: В двумерном целочисленом массиве заданного размера найти номера строк, элементы которых образуют убявающую последовательность. ...

Функция, возвращающая массив - C++
Возможно ли что функция возвращает массив. Если да то было бы хорошо листинг программы где выполняется такая реализация Спасибо!

Функция возвращающая массив - C++
Здравствуйте. Для возврата массива возвращаю указатель на него, но вне предела области в которой он был создан память выделенная под массив...

Шаблонная функция возвращающая созданный динамический массив - C++
Здравствуйте! Нужна Ваша помощь! Нужна шаблонная функция которая возвращает созданный динамический массив, который на 2...

Функция возвращающая позицию первого вхождения числа в массив - C++
Задача: Написать функцию, которая получает в качестве параметров адрес числового массива данных, его размер и число. Функция...

Функция возвращающая позицию первого вхождения числа в массив - C++
Вот задача: Написать функцию, которая получает в качестве параметров адрес числового массива данных, его размер и число. Функция...

Функция, возвращающая значение - C++
сам не могу осилить

Функция возвращающая ссылку - C++
Так делать не правильно, но попытался написать код: int&amp; func(int &amp;x) { return &amp;x; } В чем ошибка?

Функция, возвращающая ссылку - C++
Помогите исправить функцию, которая возвращает ссылку на массив size_t Crd() { size_t crd; return &amp;crd; }

Функция, возвращающая vector - C++
Решил реализовать шарповскую String.Split(). Она должна возвращать vector&lt;string&gt;, следовательно либо для него надо выделять место в...

Функция возвращающая константу - C++
Почему добавление спецификатора const ничего не меняет? const int f(int a) { return a; } int main(int argc, char *argv)...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
6322 / 5906 / 1913
Регистрация: 18.12.2011
Сообщений: 15,189
Завершенные тесты: 1
01.07.2015, 16:34     Функция возвращающая массив #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Нельзя возвращать адреса нединамических локальных переменных,
т.к. после выхода из функции они становятся недействительными.

Один из возможных вариантов:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int *convertToBin()
{
    int* a=new int[5];
    for(int i=0;i<5;i++)
         a[i]=i;
    return a;
}
 
int main()
{
    int *arr = convertToBin();
 
    for (int i = 0; i < 5; i++)
    {
        std::cout << arr[i] << std::endl;
    }
    delete[] arr; // К сожалению, в этом случае надо массив удалять
    system("pause");
    return 0;
}
А лучше так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void convertToBin(int* a)
{
    for(int i=0;i<5;i++)
         a[i]=i;
}
 
int main()
{
    int arr[5];
    convertToBin(arr);
 
    for (int i = 0; i < 5; i++)
    {
        std::cout << arr[i] << std::endl;
    }
    system("pause");
    return 0;
}
smartpointer
67 / 61 / 23
Регистрация: 17.02.2014
Сообщений: 256
01.07.2015, 16:38     Функция возвращающая массив #3
Нельзя возращать локальную переменную, в вашем случае вы возращаете адрес первого байта массива, который будет уничтожен при выходе из функции. В функции можно создать массив в куче - тогда пример будет рабочим.
Ответ Создать тему
Опции темы

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