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

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

Войти
Регистрация
Восстановить пароль
 
jon_illien
2 / 2 / 1
Регистрация: 14.08.2012
Сообщений: 78
#1

Динамический массив и указатель на указатель - C++

03.10.2012, 20:12. Просмотров 638. Ответов 3
Метки нет (Все метки)

Спасибо за внимание) Задача такова: нужно удалить элемент по индексу, при этом уменьшить сам массив на 1 (т.е. удалили элемент - уменьшился массив). Помогите!



C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int N = 10
    int *a = new int [N];
    int k = 5;
 
        cin >> k;
 
    func(a, N, k);
    
 
void func(int *a, int &n, int k)
{
    int *b = new int [n-1];
    
 
    for(int i=0, j=0; i<n; i++)
    {
        if(i==k)    continue;
        *(b+j++) = *(a+i);
    }
 
    delete []a;         ВОТ ТУТ И ПРОБЛЕМА. 
    *a = *b;            после удаления а, нужно к а приравнять b
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.10.2012, 20:12     Динамический массив и указатель на указатель
Посмотрите здесь:

C++ Указатель на указатель - разница способов
указатель и массив C++
Указатель на двухмерный динамический массив C++
Нужно сделать указатель на динамический двумерний массив C++
Указатель и массив C++
C++ Функция принимает указатель на динамический массив и возвращает его же, но без чисел полиндромов (читается с обоих сторон одинаково - 234432)
C++ Динамический массив и указатель
Динамический список, беглый указатель C++
C++ В функцию передается несколько целых чисел. Создать из всех параметров динамический массив и вернуть указатель
Умный указатель и динамический массив C++
Не работает динамический массив в классе: что раньше, указатель или размер? C++
Классы, указатель на динамический массив C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
doctor_lecter
280 / 153 / 8
Регистрация: 22.09.2012
Сообщений: 283
03.10.2012, 20:17     Динамический массив и указатель на указатель #2
Вместо *a = *b; надо a=b;

А чтобы вернуть из функции новый массив надо изменить так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void func(int **a, int &n, int k)
{
    int *b = new int [n-1];
    
 
    for(int i=0, j=0; i<n; i++)
    {
        if(i==k)    continue;
        *(b+j++) = *((*a)+i);
    }
 
    delete [](*a); 
    *a = b;
}
jon_illien
2 / 2 / 1
Регистрация: 14.08.2012
Сообщений: 78
03.10.2012, 20:48  [ТС]     Динамический массив и указатель на указатель #3
спасибо. замечательно. вышло.

Добавлено через 26 минут
Цитата Сообщение от doctor_lecter Посмотреть сообщение
Вместо *a = *b; надо a=b;

А чтобы вернуть из функции новый массив надо изменить так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void func(int **a, int &n, int k)
{
    int *b = new int [n-1];
    
 
    for(int i=0, j=0; i<n; i++)
    {
        if(i==k)    continue;
        *(b+j++) = *((*a)+i);
    }
 
    delete [](*a); 
    *a = b;
}
Все таки не недоумеваю, зачем нужен указатель на указатель
doctor_lecter
280 / 153 / 8
Регистрация: 22.09.2012
Сообщений: 283
03.10.2012, 20:57     Динамический массив и указатель на указатель #4
Потому что указатель который передается в функцию и указатель внутри функции это не одно и тоже; и поэтому при изменении значения указателя внутри функции вне функции он не изменится.
Yandex
Объявления
03.10.2012, 20:57     Динамический массив и указатель на указатель
Ответ Создать тему
Опции темы

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