• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Работа с динамической памятью. Подскажите...

  • Автор темы Podarochek
  • Дата начала
Статус
Закрыто для дальнейших ответов.
P

Podarochek

Через функцию можно ли изменить адрессацию переданного ей указателя на память выделяемую в той же функции, не получается...
 

Kmet

Well-known member
25.05.2006
904
8
BIT
0
да не получается... точно выражать свои мыслм
 
P

Podarochek

Дан массив целых чисел. Создать функцию, позволяющаю добавить елемент в конец массива...
 
P

Podarochek

подробно: :)

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

int* add_el(int *_p,int& size, int el)//1) добавление элемента в конец массива;
{
int *p;
p=new int [size+1];
for (int i=0;i<size;i++)
{
p=_p;
}
p[size]=el;
delete[]_p;
size++;
return p;

}
 

Kmet

Well-known member
25.05.2006
904
8
BIT
0
можно ли изменить адрессацию указателя прямо в функции
это выражение ест мой моск

если я правильно понял, то нужно в таком случае передавать в функцию не указатель на массив, а указатель на указатель.

int* add_el(int **_p,int& size, int el)//
 
M

mms

Код:
void add_el(int **_p,int& size, int el)
{
int *p;
p=new int [size+1];
for (int i=0;i<size;i++)
{
p[i]=(*_p)[i];
}
p[size]=el;
delete[] _p;
size++;
*_p = p;
}

Что-то типа этого видимо :(

А вообще для добавления каждого элемента создавать новый массив - это жесть.
 
P

Podarochek

Предложите способы, но без ООП...
 
E

European

Для: Podarochek
А где здесь ООП? Указатель на указатель это уже ООП? Ну-ну...
 
P

Podarochek

<!--QuoteBegin-mms+24:07:2007, 09:46 -->
<span class="vbquote">(mms @ 24:07:2007, 09:46 )</span><!--QuoteEBegin-->это выражение ест мой моск
[snapback]73155" rel="nofollow" target="_blank[/snapback]​
[/quote]

..а мой как ест...я не претендую на звание самого красноречивого программиста поскольку даже не чайник в нем, а где-то "блюдце", но надо с чего-то начинать...пока как могу...
разобрался...можно передать ссылку на указатель....void add_el(int &*_p,int& size, int el), спасибо...


всетаки, будут еще предложения? Дабы такие вопросы больше не появлялись на форумах и братья наши "по разуму" - достойные и продвинутые увеличивались в своем колличестве... :(
 
E

European

<!--QuoteBegin-Podarochek+24:07:2007, 11:06 -->
<span class="vbquote">(Podarochek @ 24:07:2007, 11:06 )</span><!--QuoteEBegin-->Дабы такие вопросы больше не появлялись на форумах
[snapback]73164" rel="nofollow" target="_blank[/snapback]​
[/quote]
Существует стандартная библиотека С++ (STL), в состав которой входит контейнер vector, поддерживающий динамическое изменение размера

<!--QuoteBegin-Podarochek+24:07:2007, 11:06 -->
<span class="vbquote">(Podarochek @ 24:07:2007, 11:06 )</span><!--QuoteEBegin-->всетаки, будут еще предложения?
[snapback]73164" rel="nofollow" target="_blank[/snapback]​
[/quote]
Что конкретно тебя не устраивает? Способ передачи параметра или реализация функции?
 
P

Podarochek

<!--QuoteBegin-mms+24:07:2007, 09:46 -->
<span class="vbquote">(mms @ 24:07:2007, 09:46 )</span><!--QuoteEBegin-->А вообще для добавления каждого элемента создавать новый массив - это жесть.
[snapback]73155" rel="nofollow" target="_blank[/snapback]​
[/quote]

на этапе знаний с вершиной "динамичесих массивов" (не говорим про STL) существует другой способ?
 
B

BVS

Для: Podarochek
Перефразирую вопрос: если в функцию передается х, можно ли заменить его на у.
Ответ: НЕТ. Чтоб поменять переданную переменную нужно передавать не саму переменную, а её адрес.
PS: Тут тебе mms даже код привел.
 
P

Podarochek

я с кодом полностью согласен и разобрался...
всем спасибо...
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!