2015-03-15 3 views
-4

Я новичок в программировании. Я сделал C++ до структуры, но я не понимаю указателей.Динамическое распределение массива, передаваемого в функции

Я знаю, как передать указатели, но я не знаю, когда :(.

Пожалуйста, помогите мне,

сказать также мне, как динамически выделять массив целых чисел в функции, функция должна возвращает указатель на массив

+3

стороне: это звучит, как вы изучаете от плохого источника. Кто-то, изучающий C++, особенно если они просто изучают программирование, - не должен иметь дело с указателями и динамически распределять память. Они должны быть, например, научиться использовать «вектор» вместо этого. (действительно, это похоже на то, что вы учитесь писать код ** C **, чем код ** C++ **) – Hurkyl

+0

У меня не было визуальной студии на моем ноутбуке раньше, и мой учитель учил нас в первый раз в ней но теперь я изучаю ООП очень хорошим сэром, но поскольку мои предыдущие концепции не ясны, поэтому я очень боюсь. – teeba

ответ

-2

Это тот вопрос, который должен быть получен ответ от ваших собственных исследований Вот хедз-ап, однако:.

передавать указатели в качестве аргументов функций, когда вы не хотите копировать объекты во время выполнения ионных звонков. Когда вы передаете объект по значению (не по адресу), объект копируется в фрейм стека функций. Если объект является большим определяемым пользователем типом, стоимость копирования может затруднить производительность, если соответствующая функция часто вызывается в критически важных точках.

Еще раз в отношении пользовательских типов вы можете не захотеть перегружать конструктор копирования или перемещать конструктор. Если ваш тип имеет динамически распределенные данные (указатели на объекты в куче), конструктор копии по умолчанию сделает мелкую копию указателя, и в этом случае вызов delete на нем приведет к тому, что данные кучи исходных объектов и данные кучи скопированного объекта будут удаляться из памяти.

int* func() 
{ 
int* _pTemp = new int[10]; 
return _pTemp; 
} 

или

int* func(int _iSize) 
{ 
int* _pTemp = new int[_iSize]; 
return _pTemp; 
} 

Успехов

+0

«Пропускать указатели в качестве аргументов для функций, когда вы не хотите копировать объекты во время вызовов функций». У C++ есть ссылки для этого. – juanchopanza

+0

Разговор о достоинствах указателей и ссылок не на тему. У меня есть причины предпочесть один за другим в разное время. Также обратите внимание, что ссылка является по существу постоянным указателем. Cheers – Serge

+0

Такая грубая дедукция ха-ха. Мой ответ полностью касался вопроса. – Serge

Смежные вопросы