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

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

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

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

01.07.2015, 15:58. Просмотров 234. Ответов 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++
C++ Функция, возвращающая массив
Шаблонная функция возвращающая созданный динамический массив C++
C++ Функция, возвращающая массив
C++ Функция, возвращающая указатель
C++ Функция, возвращающая vector
Функция, возвращающая массив C++
C++ Функция, возвращающая указатель на двумерный массив
C++ Функция возвращающая позицию первого вхождения числа в массив
Функция возвращающая позицию первого вхождения числа в массив C++
C++ Функция возвращающая константу
Функция возвращающая ссылку C++

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

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

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