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

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

Войти
Регистрация
Восстановить пароль
 
Anklav
436 / 294 / 22
Регистрация: 23.01.2013
Сообщений: 622
Завершенные тесты: 2
#1

Возврат созданного в функции массива - C++

23.05.2013, 23:16. Просмотров 492. Ответов 4
Метки нет (Все метки)

Верна ли следующая конструкция?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void LoadArray(float* array, int & count)
{
    int fcount = 30;//данная цифра подсчитывается при открытии файла.
    count = fcount;
    array = new float[fcount];
 
    // дальше загрузка данных в массив.
}
 
void main()
{
    float* Data = null;
    int count = 0;
    LoadArray(Data, count);
    //После этой функции у меня Data все равно == null
}
Суть в чем. В файле записано неизвестное количество допустим float'ов, и создавать динамически массив до вызова функции загрузки не имеет смысла, т.к. неизвестно сколько данных будет в файле. Реализовывать отдельный метод, который бы выяснял сколько данных в файле - не хочется. Как можно это сделать с 1 функцией?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2013, 23:16     Возврат созданного в функции массива
Посмотрите здесь:

Возврат строки из функции C++
Возврат массива из функции C++
C++ Возврат массива из функции
C++ Возврат массива из функции
C++ Не могу организовать возврат массива из функции
Возврат значения функции C++
Возвращение из функции динамически созданного объекта C++
C++ Расчёт значений двумерного массива и их возврат в main() с однократным вызовом функции
Возврат boost::any из функции C++
C++ Возврат массива из функции
C++ Возврат массива из функции
C++ Возврат строки из функции

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1480 / 1056 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
23.05.2013, 23:19     Возврат созданного в функции массива #2
count передали по ссылке и он изменяется. с указателем точно так же. передаем его по ссылке и он поменяется:
C++
1
2
3
4
void LoadArray(float*& array, int & count)
{
  ...
}
но лучше пользоваться std::vector или еще чем-нибудь вместо голых массивов
Anklav
436 / 294 / 22
Регистрация: 23.01.2013
Сообщений: 622
Завершенные тесты: 2
23.05.2013, 23:35  [ТС]     Возврат созданного в функции массива #3
Я не для винды программы пишу, библиотеки std у меня нет.

Что-то мне не понятно, а почему не достаточно было передать указатель? Или если через указатель, то нужно было передавать указатель на указатель?

Кажется понял.
DU
1480 / 1056 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
23.05.2013, 23:49     Возврат созданного в функции массива #4
чтобы внутри функции поменялся объект какого-то типа, этот объект в функцию нужно отдать либо по ссылке, либо указатель на него. т.к. указатель на что-то это тоже тип, то для того, чтобы указатель на что-то поменялся внутри функции, его в эту функцию нужно отдать либо по ссылке, либо указатель на этот указатель.
Croessmah
24.05.2013, 05:56     Возврат созданного в функции массива
  #5

Не по теме:

std никак не зависит от наличия винды.

Yandex
Объявления
24.05.2013, 05:56     Возврат созданного в функции массива
Ответ Создать тему
Опции темы

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