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

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

Восстановить пароль Регистрация
 
valeriy007
65 / 10 / 2
Регистрация: 27.10.2014
Сообщений: 341
01.07.2015, 15:58     Функция возвращающая массив #1
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++
C++ функция возвращающая массив
Шаблонная функция возвращающая созданный динамический массив C++
C++ функция возвращающая массив
C++ Функция возвращающая абсолютное разницу первого и второго параметров и функция типа int, возвращающая минимальное из трех целых чисел
C++ Функция, возвращающая указатель
Функция, возвращающая массив C++
C++ Функция, возвращающая указатель на двумерный массив

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5953 / 5558 / 1787
Регистрация: 18.12.2011
Сообщений: 14,204
Завершенные тесты: 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
 Аватар для smartpointer
64 / 58 / 23
Регистрация: 17.02.2014
Сообщений: 250
01.07.2015, 16:38     Функция возвращающая массив #3
Нельзя возращать локальную переменную, в вашем случае вы возращаете адрес первого байта массива, который будет уничтожен при выходе из функции. В функции можно создать массив в куче - тогда пример будет рабочим.
Yandex
Объявления
01.07.2015, 16:38     Функция возвращающая массив
Ответ Создать тему
Опции темы

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