Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
dimitrykorno
0 / 0 / 0
Регистрация: 16.04.2016
Сообщений: 49
#1

Возвращение из функции массива указателей - C++

16.04.2016, 18:48. Просмотров 255. Ответов 3

Здравствуйте. Мне нужно вернуть из функции массив указателей.
Внутри функции создаю динамический массив указателей, в который помещаю адреса определенных элементов переданного динамического массива.
Путаюсь в указателях. Возможно при передаче из функции, возможно при выводе.

в main
C++
1
2
3
4
5
int *Lkr=NULL;
Lkr = krat(A, G, L); 
for (i = 0; Lkr[i]; ++i) cout << Lkr[i] << " ";
//где A - динамический массив,указатель определен глобально. G - граница(количество обрабатываемых элементов).
//L - число, кратность которому проверяю.
функция
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int* krat(int *C, int n0, int K) //функция находит числа, кратные данному в переданном массиве, возвращает массив указателей на элементы исходного массива
{
    int t = 0;
    int**B = new int*[n0];
    
    for (i = 0; i < n0; i++)
        if (((C[i]>=K) && (C[i] % K == 0))||(C[i]==0))
        {
            B[t] = &C[i];
            t++;
        }
    B[t] = NULL; //последний указатель NULL для определения конца нужных элементов
 
    return *B;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.04.2016, 18:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Возвращение из функции массива указателей (C++):

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

Возвращение массива из функции - C++
Нужно вернуть массив типа int из функции Как я понимаю сделать это можно только с помощью указателей У меня это получилось но так...

Возвращение массива из функции - C++
Почему такой код выводит массив корректно. int* Input() { int b = { 10,20,30 }; return b; } int main() {

Возвращение массива из функции - C++
Как вернуть массив из функции? double* Zapolnenie(string Name) { if (Name == &quot;A&quot;) { const int number1 = 10; double A; ...

Возвращение многомерного массива из функции - C++
Как вернуть многомерный массив из функции для обычного массива c использованием указателей это выглядит так void function(int*); //...

Возвращение массива из функции-шаблона - C++
Есть массив int iArray = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; есть шаблон функция template&lt; typename T &gt; T * MySwap(const T...

3
nmcf
5754 / 5065 / 1733
Регистрация: 14.04.2014
Сообщений: 20,749
16.04.2016, 18:49 #2
Ну а тип у тебя почему отличается? Сделай везде int**.
0
dimitrykorno
0 / 0 / 0
Регистрация: 16.04.2016
Сообщений: 49
16.04.2016, 18:53  [ТС] #3
Ну а тип у тебя почему отличается? Сделай везде int**.
объявить int **Lkr?
а как тогда будет выглядеть проверка на нулевой адрес в цикле? так же, или станет *Lkr? и вызов функции *Lkr=krat(..)
0
nmcf
5754 / 5065 / 1733
Регистрация: 14.04.2014
Сообщений: 20,749
16.04.2016, 19:06 #4
Я не понял, что ты там проверяешь, но должно быть так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int **Lkr=NULL;
Lkr = krat(A, G, L); 
for (i = 0; Lkr[i]; ++i) cout << Lkr[i] << " ";
 
int** krat(int *C, int n0, int K) //функция находит числа, кратные данному в переданном массиве, возвращает массив указателей на элементы исходного массива
{
    int t = 0;
    int**B = new int*[n0];
    
    for (i = 0; i < n0; i++)
        if (((C[i]>=K) && (C[i] % K == 0))||(C[i]==0))
        {
            B[t] = &C[i];
            t++;
        }
    B[t] = NULL; //последний указатель NULL для определения конца нужных элементов
 
    return B;
}
Функция возвращает то, что создала, иначе будет утечка.
1
16.04.2016, 19:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.04.2016, 19:06
Привет! Вот еще темы с ответами:

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

Возвращение двумерного массива из функции - C++
Здравствуйте, написал пробник, чтобы освоить метод возвращения из функции двумерного массива (указателя). Что-то не заладилось с двумерным....

Возвращение двумерного массива из функции - C++
int function (int x, const int r, const int c) //работает только если указана размерность массива x { int max, i, maxelrownum = 0; ...

Возвращение функциями указателей - C++
Доброго времени суток:) Помогите понять код!!!Суть вопроса описана в коментах в коде. Условие задачи:В программе демонстрируеться...


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

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

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