Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
Anklav
446 / 304 / 47
Регистрация: 23.01.2013
Сообщений: 661
Завершенные тесты: 2
1

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

23.05.2013, 23:16. Просмотров 591. Ответов 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 функцией?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2013, 23:16
Ответы с готовыми решениями:

Возврат массива из функции
Есть задача: используя функции, вычислить количество элементов заранее введённых массивов, которые...

Возврат массива из функции
Здравствуйте! Нужно решить задачу, но для её решения я не могу понять как правильно вывести...

Возврат массива из функции
Программа должна переводить числа с 10 системы в двоичную... но почемуто выводит некорректно... Вот...

Возврат массива из функции
В объекте есть массив int state;, который мне нужно из него вытащить. Вижуал показывал ошибку,...

4
DU
1491 / 1137 / 165
Регистрация: 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 или еще чем-нибудь вместо голых массивов
1
Anklav
446 / 304 / 47
Регистрация: 23.01.2013
Сообщений: 661
Завершенные тесты: 2
23.05.2013, 23:35  [ТС] 3
Я не для винды программы пишу, библиотеки std у меня нет.

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

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

Не по теме:

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

0
24.05.2013, 05:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.05.2013, 05:56
Привет! Вот еще темы с ответами:

Возврат массива из функции
Здравствуйте, Не пойму почему не работает данный код. Пишет cannot convert 'std::string*' to...

Возврат массива из функции
Здравствуйте. Не могу разобраться, почему при передачи массива из функции но не правильно...

Возврат двумерного массива из функции
При попытке возврата массива из функции выскакивает ошибка "cannot convert ‘double (*)’ to ‘double’...

возврат динамического массива из функции
Всем привет, вот часть кода функцииchar *result=new char; int ind=0; int number=0; ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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