Копирование динамического массива c++. Скопировать массив с++. С++ Для начинающих. Урок #58

แชร์
ฝัง
  • เผยแพร่เมื่อ 19 ธ.ค. 2024

ความคิดเห็น • 197

  • @mosfetzp2417
    @mosfetzp2417 7 ปีที่แล้ว +73

    раз 10 пересмотрел видео и все понял, спасибо!

    • @SimpleCodeIT
      @SimpleCodeIT  7 ปีที่แล้ว +23

      Пожалуйста! =)

  • @LenTos1337
    @LenTos1337 6 ปีที่แล้ว +80

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

    • @da_costa-h7t
      @da_costa-h7t 5 ปีที่แล้ว +29

      Зачем их менять местами, если можно поменять только указатели?)

    • @ИсаакГерде
      @ИсаакГерде 4 ปีที่แล้ว

      # include
      # include
      using namespace std;
      void Massiv_zapolnenie(int*const arr,const int size)
      {
      for(int i=0;i

    • @andreyvolkov3117
      @andreyvolkov3117 4 ปีที่แล้ว +3

      @@ИсаакГерде я так скажу, ты не делай так, а перед заполнением данных из другого массива, удали все данные из других, иначе если они будут разного размера, то будет факап

    • @gisg9398
      @gisg9398 3 ปีที่แล้ว +7

      @@ИсаакГерде Руки могут оторвать за то, что так функции называешь. Аккуратнее)

    • @asankod8549
      @asankod8549 3 ปีที่แล้ว +6

      void Swaparr(int* &arr, int const size, int * &arr2, int const size2) {
      int *tempArr = new int[size];
      for (int i = 0; i < size; i++)
      {
      tempArr[i] = arr[i];
      }
      delete[] arr;
      arr = new int[size2];
      for (int i = 0; i < size2; i++)
      {
      arr[i] = arr2[i];
      }
      delete[] arr2;
      arr2 = new int[size];
      for (int i = 0; i < size; i++)
      {
      arr2[i] = tempArr[i];
      }
      delete[] tempArr;
      }
      вот рабочая функция, мб кому надо будет

  • @JustMe-zu4ex
    @JustMe-zu4ex 3 ปีที่แล้ว +5

    4к лайков против 4 дизлайков. Как по мне комментарии тут будут излишни. Моё уважение автору!

  • @highlander1531
    @highlander1531 5 ปีที่แล้ว +29

    Даааа, сложный урок вроде всё понял но надо видео пересмотреть ещё раза два как минимум. Спасибо за урок было очень интересно

    • @CapyBarsTraining
      @CapyBarsTraining 4 ปีที่แล้ว

      как успехи? стал Seniorom?

    • @andreyvolkov3117
      @andreyvolkov3117 4 ปีที่แล้ว +5

      @@CapyBarsTraining за 8 месяцев нереально. И сфер много. Поэтому ты лучше спроси у него "Устроился на работу C++ прогером?"

    • @AnderX003
      @AnderX003 3 ปีที่แล้ว +1

      @@andreyvolkov3117 а ты устроился?

    • @andreyvolkov3117
      @andreyvolkov3117 3 ปีที่แล้ว +4

      @@AnderX003 ну как сказать. Я на чем-то, что между стажировкой и учёбой. Мне как бы не платят, но я без этого на работу попасть в эту компанию не смогу. Ну и я уже пишу не на C++, а на Java/Kotlin.

    • @Imgui_seller
      @Imgui_seller 2 ปีที่แล้ว

      @@AnderX003 А у тебя как успехи:D

  • @ИльяЯкобсон-ю7ж
    @ИльяЯкобсон-ю7ж 4 ปีที่แล้ว +55

    То чувство, когда вернулся на предыдущее видео, чтобы поставить лайк. хДД 0_о

    • @enjoylive4578
      @enjoylive4578 3 หลายเดือนก่อน

      стал программистом?

  • @SimpleCodeIT
    @SimpleCodeIT  7 ปีที่แล้ว +24

    #динамическиймассив #SimpleCode #урокипрограммирования

  • @Ermine882
    @Ermine882 7 ปีที่แล้ว +23

    Спасибо за урок.

  • @Surgeon_Evil
    @Surgeon_Evil 6 ปีที่แล้ว +3

    Все подробно рассказано. Большое спасибо. В интернете всякую ерунду пишут, а здесь довольно все просто и внятно рассказано (и не только в этом уроке)

  • @maksvol2003
    @maksvol2003 3 ปีที่แล้ว +4

    Возможно, чего-то не понимаю, но я реализовал данную идею следующим образом:
    for (int i = 0; i < size; i++){
    *(firstarray + i) = *(secondarray + i);
    }
    В итоге адреса элементов первого массива остались прежними, но значения стали равными как у второго.

    • @ДанилГолдобин-ж2ь
      @ДанилГолдобин-ж2ь 2 ปีที่แล้ว +5

      Если размеры у массивов разные, то этот способ не пройдет

    • @aviator1472
      @aviator1472 ปีที่แล้ว +2

      ​@@ДанилГолдобин-ж2ь так и способ автора не подойдёт,лол. Для такого нужно что бы массивы были одинаковые либо первый меньше второго, но не наоборот. Я тоже не понял зачем автор зачищал все когда можно было сделать firstarray[i]=secarray[i]. То же самое что и в комментарии выше.

    • @roockeet3460
      @roockeet3460 5 หลายเดือนก่อน

      @@aviator1472 автор говорил такой способ если массивы будут разной длины , соответственно его реализация тоже под массивы разной длины и если переменная size была бы у них не общая то его реализация была работающей! то есть она и так рабочаю но из за того что у них size один и тот же они одной длины

    • @ProHolmes
      @ProHolmes หลายเดือนก่อน

      @@aviator1472 способ автора подойдёт. Потому что он удаляет всё первоначальное содержимое массива рецепиента, и выделяет память заново, уже в размере как у массива-донора. Ему надо было изначально создать 2 массива разной длины, чтобы людям было нагляднее видно, что происходит.

  • @archiechellaut9483
    @archiechellaut9483 3 ปีที่แล้ว +2

    Большое спасибо вам за урок и прекрасное пояснение, Сергей!

  • @androidmaslahat9372
    @androidmaslahat9372 7 ปีที่แล้ว +14

    Спасибо большое!!!!!!!!!!!

  • @androidpasha
    @androidpasha 3 ปีที่แล้ว +2

    Сразу подумалось что должен быть способ более изящный чем цикл, подумалось о копировании куска памяти во вновь испечённый массив и действительно такая функция есть "memcpy".

  • @skorp291
    @skorp291 7 ปีที่แล้ว +1

    Добрый день! Очередное спасибо за урок!!!

  • @paulkulakov6690
    @paulkulakov6690 4 ปีที่แล้ว

    Просто огромное СПАСИБО, Сергей

  • @royalflesh6377
    @royalflesh6377 3 ปีที่แล้ว

    Большое спасибо. очень интересный урок!!!

  • @АртурГребешков-к6ж
    @АртурГребешков-к6ж 6 ปีที่แล้ว +3

    Спасибо за урок!!!!

  • @Гычпук
    @Гычпук ปีที่แล้ว

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

  • @АлександрЛитвинюк-х2ы
    @АлександрЛитвинюк-х2ы 4 ปีที่แล้ว +1

    Спасибо за знания!

  • @trimo1120
    @trimo1120 ปีที่แล้ว

    Когда, автор сказал, про алгоритм копирования массива, я решил поставить на паузу и написать функцию, которая это реализует. Вот, что вышло:
    void copyArray(int* const arr1, int* const arr2, const int size) {
    delete [] arr1;
    arr1 = new int arr[size];
    int i = 0;
    for (i; i < size; i++) {
    arr1[i] = *(arr2 + i);
    }
    }

    • @roockeet3460
      @roockeet3460 5 หลายเดือนก่อน

      void copyArray(int* copyIn, int* copyFrom, int sizeIn,int sizeFrom) {
      delete[] copyIn;
      copyIn = new int[sizeFrom];
      for (int i = 0; i < sizeFrom; i++) {
      copyIn[i] = copyFrom[i];
      }
      }

    • @trimo1120
      @trimo1120 5 หลายเดือนก่อน

      @@roockeet3460 Я давно это писал, мой и твой код можно считать не отличными, есть куда более быстрое копирование: по 4/8/16 и т.п. байта, если не возможно копировать по кускам, то оставшиеся байты, мы копируем, либо побитово, либо байтами. Это копирование можно назвать кусками.

  • @mr.warpunch6007
    @mr.warpunch6007 2 ปีที่แล้ว

    Cпасибо за урок, лайк!

  • @РоманТеплинский-о8у
    @РоманТеплинский-о8у 5 ปีที่แล้ว +2

    Спасибо за классные уроки :)

  • @SeshAlex
    @SeshAlex 6 ปีที่แล้ว +4

    Спасибо большое!

  • @ДГаусс
    @ДГаусс 4 ปีที่แล้ว

    Thank you Sergey!

  • @EeVaAnEeVaAn
    @EeVaAnEeVaAn 6 ปีที่แล้ว +1

    Ты очень крутой, обожаю тебя.

  • @freeDME
    @freeDME 3 ปีที่แล้ว

    Лучшие уроки по с++, интересно, читаешь ли ты до сих пор комментарии к старым видео.

  • @eterniumsoul
    @eterniumsoul 7 ปีที่แล้ว +3

    а ф-ция "memcpy" разве не подходит для таких целей ?

  • @olegsimonov1680
    @olegsimonov1680 3 ปีที่แล้ว +5

    Подскажите пожалуйста, почему здесь не используется обнуление значения указателей массива firstArray и secondArray посредством присваивания им значения nullptr?

    • @Куся-ч9я
      @Куся-ч9я 3 ปีที่แล้ว +2

      Мой отладчик после ключевого слова delete[] указывает для двух массивов на одни и те же адреса в оперативной памяти. Возможно компилятор автоматически подчищает адреса после delete'a. Точно не знаю, поэтому мне не верьте)

    • @АнонимАнонимыч-х8ц
      @АнонимАнонимыч-х8ц 2 ปีที่แล้ว

      А зачем), мы удаляем данные с помощью delete а у указатели просто помнят тот участок памяти на который они указывали, после мы просто присваиваем им новый участок памяти а про предыдущий они само собой забывают) хотя можно и обнулять, но разницы как таковой не будет)

  • @igorfamelio7449
    @igorfamelio7449 2 ปีที่แล้ว

    Вот код создал, словари одинаковые и в памяти храняться под разными ячейками, хз к чему тот длинучий код, когда его увидел начал проклинать синтаксис c++
    void main()
    {
    // Создание массива
    int matrix[5]{ 2,1,5,9,10 };
    int copy_matrix[5];
    for (int i = 0; i < size(matrix); i++)
    {
    copy_matrix[i] = matrix[i];
    }

  • @jangiryanarsen4952
    @jangiryanarsen4952 7 ปีที่แล้ว

    Да, как эксперимент копирование (firstArray = secondArray) в Mac OS X, приводит к взыванию исключения.Компилятор, даже во время компиляции, не допустил утечку памяти!! И вызвал исключение ошибок malloc(malloc_error_break). Для тех, кто работает на UNIX. A вот Visual Studio 2017, только после компиляции, и вывода информации в консоль, смог увидеть утечку памяти!

    • @60d93
      @60d93 6 ปีที่แล้ว +3

      На vs сидят умные ребятки, они сначала массив удалят)

  • @plyo
    @plyo 5 ปีที่แล้ว +11

    Здравствуйте, не очень понимаю, зачем удалять array1, если можно сразу каждый элемент одного массива заменить на элемент другого?

    • @yuziazumi3563
      @yuziazumi3563 4 ปีที่แล้ว +11

      Он объяснил, что массивы могут быть разных размеров, поэтому и удаляем первый

    • @ihy1234
      @ihy1234 4 ปีที่แล้ว +1

      @@yuziazumi3563 Вовремя )

    • @yuziazumi3563
      @yuziazumi3563 4 ปีที่แล้ว +5

      @@ihy1234 никогда не поздно)

    • @sabatonbaton6105
      @sabatonbaton6105 4 ปีที่แล้ว +1

      @@yuziazumi3563 А смысл в это если там размер size всё ровно

    • @GottyMintly
      @GottyMintly 4 ปีที่แล้ว +4

      Мы удаляем данные, на которые указывает первый указатель, переназначаем его на новую выделенную память под массив, размер которого соответствует размеру второго массива, на который указывает второй указатель. И поэлементно записываем данные из второго массива в первый. Такая операция бывает полезна когда, например, нужно удалить из массива все положительные числа, или добавить туда какие-то числа. Сначала мы проворачиваем нужную процедуру с новым массивом, а затем копируем данные в старый, после чего можно удалить новый, вот и перезапись

  • @farka1880
    @farka1880 5 ปีที่แล้ว +1

    Спасибо !

  • @КириллСафронов-о9д
    @КириллСафронов-о9д 2 ปีที่แล้ว

    Спасибо!🥰

  • @АндрейКочегура-м5я
    @АндрейКочегура-м5я 5 ปีที่แล้ว +1

    Довольно жеско выглядит добавление/удаление строк на плюсах, особенно после матлаба

  • @rpgzeys
    @rpgzeys 2 ปีที่แล้ว

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

    • @ВладиславТимофеюк
      @ВладиславТимофеюк 3 หลายเดือนก่อน +1

      дай одномерному длину = сумме всех строк двумерного

  • @HoriganFrank
    @HoriganFrank 2 ปีที่แล้ว

    Если массивы одинаковой длины, нельзя ли просто поэлементно присвоить новые значения нужному массиву, из другого.
    Уже сделал удаление строки из двумерного массива. Фактически создание нового массива с количеством строк на 1 меньше, и перезапись по элементно строк, исключая указанную. Вроде все получилось. Но сейчас пытаюсь осмыслить как и почему и не ясно.
    for (int i = 0; i < rows; i++)
    {
    delete[] arr[i];
    }
    delete[] arr;
    rows--;
    arr = NewArray;
    Удаляем в цикле указатели строк, и потом сам массив массивов.
    Уменьшаем общее количество строк.
    Присваиваем данные из Нового массива, который сами же заполнили из основного.
    Вот не ясно. Как вообще заполняется.
    При таком удалении двумерного массива, мой arr в каком виде находится ?
    не остается ли в памяти пустая строка. которую не заполняю. Или после удаления массива и присвоении, он заново выстраивается ?

  • @dmitryderecha3345
    @dmitryderecha3345 6 ปีที่แล้ว +1

    Очень классно. Но у каждого свои привычки. Хотелось бы еще сравнения функций выделения памяти. При работе с дин. массивами я привык работать с malloc и realloc. Numerical recipec in c дают третий вариант. А суммарно их очень много.
    Хочется попросить автора сделать сравнительный обзор (включая и функции ОС).

    • @АлинаЛебедева-м5ь
      @АлинаЛебедева-м5ь 5 ปีที่แล้ว +6

      Если кодить на плюсах, то лучше пользоваться именно функциями С++, а не Си.

  • @krouvy469
    @krouvy469 4 ปีที่แล้ว +1

    Можно ли что-то улучшить?
    #include
    using namespace std;
    void mas(int** const arr, const int row, const int col); /// Функция объявления двумерного массива по названию
    void fill(int** const arr, const int row, const int col); /// Функция наполнения двумерного массива
    void view(int** const arr, const int row, const int col); /// Вывод массива
    void del(int** const arr, const int row); /// Очистка памяти
    void copy(int** const arr, int** const brr, const int row, const int col);/// копирования из первого массива во второй.
    int main()
    {
    setlocale(LC_ALL, "ru");
    int row, col;
    cin >> row >> col;
    int** arr = new int* [row]; // выделяем динамическую память под массив
    mas(arr, row, col); ///делаем массив arr двухмерным
    fill(arr, row, col); /// Функция наполнения массива.
    view(arr, row, col);///Вывод массива arr.
    cout

    • @krouvy469
      @krouvy469 4 ปีที่แล้ว +1

      Или это не правильно? Просто у меня в программе сначала вызывается функция копирования. А уже потом массив из которого мы копировали удаляется.

    • @krouvy469
      @krouvy469 4 ปีที่แล้ว +1

      P.P.S Опять пришлось выключить SDL проверки. По умолчанию на visual studio 2019 они включены. Чтобы их выключить нужно нажать пкм по самому проекту(срр файлу), выбрать св-ва *** С/С++ *** Общие***Проверки SDL

    • @krouvy469
      @krouvy469 4 ปีที่แล้ว +1

      Все разобрался, кажется, сделал для одномерных массивов.
      #include
      using namespace std;
      int main()
      {
      setlocale(LC_ALL, "ru");
      int size=5;
      //int size2 = 9;
      //cout > size;
      int* arr = new int[size] {7, 4, 9, 2, 4};
      int* brr = new int[size] {5,4,3,2,1};

      for (int i = 0; i < size; i++)
      {
      cout

  • @konfedicialnenkokonfedicia1968
    @konfedicialnenkokonfedicia1968 3 หลายเดือนก่อน

    Есть ли смысл ставить deleta[] в конце программы, если по завершению работы программа и так подчистит всю используемую память ?

    • @ВладиславТимофеюк
      @ВладиславТимофеюк 3 หลายเดือนก่อน

      программа может быть очень длинной и из-за такой утечки оперативка может закончиться

    • @konfedicialnenkokonfedicia1968
      @konfedicialnenkokonfedicia1968 3 หลายเดือนก่อน

      @@ВладиславТимофеюк Есть смысл ставить delete, например в функции, а если написать delete в конце программы, в этом по моему нет смысла, потому что, что вы напишите delete и почистите кучу, что программа сама завершится и почистит память которую использовала при своей работе, в том числе и кучу.

    • @ProHolmes
      @ProHolmes หลายเดือนก่อน

      @@konfedicialnenkokonfedicia1968 есть смысл ставить delete в том месте программы, после которого вы далее эти данные нигде не используете, то есть они вам не нужны, и место от них лучше освободить для чего-то нужного.
      Так то да, после убийства программы ОЗУ назначает её "бывшую" память свободной для использования.

  • @sgimancs
    @sgimancs 5 ปีที่แล้ว +6

    Конечно классическая идеология полезна, но этим сейчас вряд ли будут многие пользоваться на практике.
    C delete [] firstArray; не копируется....

    • @MrJustSergei
      @MrJustSergei 3 ปีที่แล้ว

      Почему не копируется?

  • @iwillpouryousomecoffee
    @iwillpouryousomecoffee 2 ปีที่แล้ว +1

    Отличный урок! спасибо большое!

  • @popipopi9869
    @popipopi9869 2 ปีที่แล้ว

    было бы классно, если был бы код ещё

  • @8lxckcxt
    @8lxckcxt 4 ปีที่แล้ว

    Лучший!

  • @ЯрославГоловко-ф6и
    @ЯрославГоловко-ф6и 4 ปีที่แล้ว

    спасибо

  • @veraburak8049
    @veraburak8049 4 ปีที่แล้ว

    Молодца

  • @pixel183
    @pixel183 6 ปีที่แล้ว +1

    а для чего в функции "ShowArray " вы пишете "const int *const"?

    • @khasantochiev3829
      @khasantochiev3829 6 ปีที่แล้ว +2

      Чтобы передаваемые значения случайно не изменились в ходе работы функции

    • @Kokurorokuko
      @Kokurorokuko 5 ปีที่แล้ว

      предыдущий урок смотрите

    • @biam4962
      @biam4962 4 ปีที่แล้ว

      @@Kokurorokuko вопрос именно в том, зачем 2 раза const. В FillArray написано просто "const int*"

  • @МаксимПервый-х6р
    @МаксимПервый-х6р ปีที่แล้ว +1

    как копировать двумерный динамический массив?

    • @CetoPizdec
      @CetoPizdec 9 หลายเดือนก่อน

      Стать раком и начать молится что твоя криворукость и нелогическое мышление все правильно сделает...

  • @oxygenoxygeno
    @oxygenoxygeno 3 ปีที่แล้ว

    Подскажите пожалуйста как очистить полностью динамическую память

    • @АнонимАнонимыч-х8ц
      @АнонимАнонимыч-х8ц 2 ปีที่แล้ว

      Создать цикл и каждой ячейке массива присвоить delete после самому массиву присвоить delete. Надеюсь помог :D

  • @androidpasha
    @androidpasha 3 ปีที่แล้ว

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

  • @natsurukasumi3370
    @natsurukasumi3370 2 ปีที่แล้ว

    Интересно, можливо ли скопировать таким образом массив объектов?

  • @motya_efr
    @motya_efr ปีที่แล้ว

    А можно ли копировать массив большего размера в меньший. Например нужно записать данные в неизвестном количестве, но до известного предела. Я создаю массив, заполняю его нулями, потом данными. Затем создаю второй массив, предварительно сделав счетчик, чтобы взять только данные без нулей. Или так нельзя?

    • @aviator1472
      @aviator1472 ปีที่แล้ว

      Можно, почему нет.

    • @russiantutorials4763
      @russiantutorials4763 ปีที่แล้ว

      Можно, только для этого должен быть алгоритм, который при заполнении массива высчитывает размер, чтобы цикл не зашел за границы массива (компилятор это не проверяет, поэтому здесь нужно быть внимательным). Я так понимаю, что в идеале размер массивов должен быть одинаковым, чтобы жизнь себе не усложнять. Но ситуации разные бывают, поэтому в данном случае без вычислений никак.

    • @Empty_line
      @Empty_line ปีที่แล้ว

      ​@@aviator1472 Умаляю вас можете помочь мне? у меня один вопрос!

    • @Empty_line
      @Empty_line ปีที่แล้ว

      ​@@russiantutorials4763 Помогите пожалуйста

  • @ЕгорТаранов-я1у
    @ЕгорТаранов-я1у 6 ปีที่แล้ว +5

    Сергей , пиши ,пожалуйста надпись о пользе видео и о том , что мне нужно поставить лайк, в самом конце, а то не хочется выходить из полноэкранного режима посередине просмотра и отвлекаться от учебы, а после просмотра как-то забывается нажать на "палец вверх".

  • @n1ki7azxc76
    @n1ki7azxc76 4 ปีที่แล้ว +1

    Поздравляю,у меня прога крашнулась.
    Не надо говорить,что комп слабый.32гб оперативки,5кор,1050ти.

    • @meadolphi2607
      @meadolphi2607 4 ปีที่แล้ว +2

      Поздравляю!

    • @codingposture
      @codingposture 4 ปีที่แล้ว

      Динамическими памятем работать опасно

    • @codingposture
      @codingposture 4 ปีที่แล้ว

      Динамическими памятем работать опасно

    • @gdkor
      @gdkor 2 ปีที่แล้ว

      Мог про характеристики не писать

  • @yusvel629
    @yusvel629 3 ปีที่แล้ว

    Сергей, здравствуйте! Недавно встретился с проблемой когда в отладчике в консоль выводиться два массива с разными данными, а когда запускаю компилятор без отладчика консоль выводит одинаковые данные ( как-будто это одинаковые массивы). Вы не сталкивались с подобной проблемой? если да, подскажите пожалуйста решение. Спасибо!

    • @yusvel629
      @yusvel629 3 ปีที่แล้ว +2

      Оказывается, если вызвать функцию srand(time(NULL)) из функции fillarray возникает данная проблема! srand() надо вызывать только из функции main(), в таком случае все работает корректно.

  • @Shislivchik11
    @Shislivchik11 4 ปีที่แล้ว

    A vot u menya ne poluchilos skopirivat, potomu chto v novoy dinamicheskoy pamyati funkciya rand tak je zapolnyala sluchaynimi ciframi a ne kopirovala s predidushego. Kak eto ispravit?

  • @Tim_Obozny
    @Tim_Obozny 4 ปีที่แล้ว +2

    что-то не работает с разным размером массивов ;(

  • @CBATEP
    @CBATEP 9 หลายเดือนก่อน

    int* b = new int(*a)

  • @FyUajYpUlM39
    @FyUajYpUlM39 3 ปีที่แล้ว +2

    Короче говоря, просто создаём новый динамическим массив и присваиваем соответствующие элементы друг другу, верно?

  • @lexozt334
    @lexozt334 6 ปีที่แล้ว

    Почему в параметрах функций int* arr ,а не int arr[] ?

    • @Kokurorokuko
      @Kokurorokuko 5 ปีที่แล้ว +1

      Как я понимаю, потому что это динамический массив, а не статический. Передаётся указатель на первый элемент. Просто синтаксис такой.

  • @ИНФОРМАЦИЯДЛЯУСПЕШНЫХ
    @ИНФОРМАЦИЯДЛЯУСПЕШНЫХ 5 ปีที่แล้ว

    Спсб

  • @CetoPizdec
    @CetoPizdec 9 หลายเดือนก่อน

    Это нормально что у меня вообще компилятор axyel с таких приколов про присвоение указателя массива другому указателю массива и сказал что я даун...
    Ну трудно не согласиться, но я ведь чисто в научных целях ._.

  • @DarthVader-ig6pb
    @DarthVader-ig6pb 3 ปีที่แล้ว

    А почему нельзя просто поменять указатели местами через третий временный указатель?...

    • @citrixxxx
      @citrixxxx 3 ปีที่แล้ว

      Утечка памяти произойдет

  • @jeon_jung
    @jeon_jung 4 ปีที่แล้ว

    у меня вывел ошибку C2374 firstArray пепеопределение, множественная инициализация(

    • @krouvy469
      @krouvy469 4 ปีที่แล้ว +4

      2 варианта я полагаю, первый это возможно когда ты второй раз объявлял firstArray после delete, ты сделал это так:
      int *firstArray = new int[size]; //// А надо было так firstArray = new int[size];
      И второй вариант, в этом не уверен, но возможно нужно в этом проекте нажать пкм по самому проекту(срр файлу), выбрать св-ва *** С/С++ * Общие***Проверки SDL. Если они включены выключи. По умолчанию на 2019 год они включены. Это полезная доработка VS, но некоторые вещи из-за них не получается проверить.

    • @codingposture
      @codingposture 4 ปีที่แล้ว

      @@krouvy469 у меня был 1 вариант спасибо

  • @alexgaran5339
    @alexgaran5339 4 ปีที่แล้ว +2

    Эй, это магия, или совпадение? Перед просмотром способа переноса данных массива, сделал сам перенос каждого значения массива.
    В первом и втором массиве идентичные данные (как у автора видео) получились, до десятого индекса.
    rand() всегда назначает одни и те же числа на определенный размер массива, или действительно совпадение?

    • @BROSTEP
      @BROSTEP 3 ปีที่แล้ว +1

      нужно подключить две библиотеки : ctime и cstdlib.
      srand(time(NULL));
      после этого функция rand будет генерировать каждый раз разные значения

  • @Fakem1ner
    @Fakem1ner 3 ปีที่แล้ว

    До меня только в конце видео доперло, что мы копируем массивы, а не меняем местами xD;

  • @MrJustSergei
    @MrJustSergei 3 ปีที่แล้ว

    Подскажите, а где хранятся данные первого массива после того, как сделали delete первого массива, но ещё не создали new int для новой ячейки памяти?

    • @romankuznetsov4601
      @romankuznetsov4601 2 ปีที่แล้ว

      после delete[] array данные массива нигде не хранятся

  • @lossofsoul3693
    @lossofsoul3693 8 หลายเดือนก่อน

    А кто изучил теорию - пора узнать и о memcpy(); хДД

  • @Deonnisiy
    @Deonnisiy 6 ปีที่แล้ว

    Я один обратил внимание на то, что после копирования указателя "firstArray = secondArray", выводимые значения массивов "firstArray" и "secondArray" стали одинаковыми. НО! значения массива "secondArray" в первом cout отличаются от значений "secondArray" во втором cout ???

    • @theos1489
      @theos1489 6 ปีที่แล้ว +1

      Он ещё раз присвоил случайные числа значениям массива.

  • @artem_zar
    @artem_zar 2 ปีที่แล้ว

    Я только одного не понял. Зачем нужно было дважды очищать массив. Какая цель от этого?

  • @blackjeket14
    @blackjeket14 6 ปีที่แล้ว

    // Помогите не могу понять правильно ли прога работает
    #include
    #include
    using namespace std;
    void FillArray(int * const arr, const int size) {
    for (int i = 0; i < size; i++)
    {
    arr[i] = rand() % 21;
    }
    }
    void ShowArray(int * const arr, const int size) {
    cout

    • @Kokurorokuko
      @Kokurorokuko 5 ปีที่แล้ว

      В чём проблема? Прогони через отладчик

    • @МистерРобостус
      @МистерРобостус 2 หลายเดือนก่อน

      Чё блять ты написал

  • @KaylMoran
    @KaylMoran 6 ปีที่แล้ว

    пишет ошибку и:
    Error 3 error C3861: 'FillArray': identifier not found
    Error 4 error C3861: 'FillArray': identifier not found
    Error 5 error C3861: 'ShowArray': identifier not found
    Error 6 error C3861: 'ShowArray': identifier not found
    код в точности такой же
    в чем проблема?
    пользуюсь Студией 2010

    • @akimitsuhito4646
      @akimitsuhito4646 6 ปีที่แล้ว +1

      Компилятор не видит функции, которые Вы вызвали.

    • @DJEISON97
      @DJEISON97 6 ปีที่แล้ว

      Студия старая скачай новую, может в 2010, что - то не предусмотрено..

  • @sleepyNovember_project
    @sleepyNovember_project 11 หลายเดือนก่อน

    Ну ща эксепшены полетят, только хандли

  • @Sooderone
    @Sooderone 6 หลายเดือนก่อน

    🧠

  • @Viamsupervadetvadens
    @Viamsupervadetvadens 7 ปีที่แล้ว

    up

  • @Dmitrii82
    @Dmitrii82 6 ปีที่แล้ว

    встречал вот такой массив:
    arr[2][3]{5,6,3}{8,1,7}

    • @HaraldsReplays
      @HaraldsReplays 6 ปีที่แล้ว

      двумерный массив в которых сразу введены значения , так же как с переменными, первые 3 числа это первый одномерный массив(в в фигурных скобках), а а другие второй одномерный массив

    • @Dmitrii82
      @Dmitrii82 6 ปีที่แล้ว

      Harald TV спасибо. Давно разобрался посмотрев этот канал. В квадратных скопках: [число массивов] [сколько чисел в массиве]. Автору канала моё уважение и здоровья. Ах да с праздиком!

    • @ОлегВещий-р1ф
      @ОлегВещий-р1ф 5 ปีที่แล้ว

      @@Dmitrii82 НУ ВОТ, НАКОНЕЦ-ТО И У ТЕБЯ ПРАЗДНИК!

  • @аоалал-х1т
    @аоалал-х1т 3 ปีที่แล้ว

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

    • @husky7277
      @husky7277 3 ปีที่แล้ว

      Отдохни, либо посмотри видосы о программировании, но не уроки, а просто подкасты. Мне это возвращает мотивацию))

    • @аоалал-х1т
      @аоалал-х1т 3 ปีที่แล้ว

      @@husky7277 у меня уже мотивация вернулась, уже на 79 уроке)

    • @husky7277
      @husky7277 3 ปีที่แล้ว

      @@аоалал-х1т Круто, за сколько времени?

    • @faust8th316
      @faust8th316 2 ปีที่แล้ว

      аоалал как сейчас с мотивацией ?

  • @iduckk8337
    @iduckk8337 7 ปีที่แล้ว +2

    Привет. Видео супер. Только не понял зачем было удалять и переназначать FirstArray, перед копированием. =))) Просто скопировать по элементно =)

    • @noiseless6800
      @noiseless6800 6 ปีที่แล้ว

      Тоже самое хотел написать...

    • @derter2776
      @derter2776 6 ปีที่แล้ว

      У тебя же массив уже заполненный там был. Ты удаляешь его значения через delete и можешь его заполнять/копировать

    • @derter2776
      @derter2776 6 ปีที่แล้ว

      Мое мнение

    • @СправаФея
      @СправаФея 6 ปีที่แล้ว +5

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

    • @Kokurorokuko
      @Kokurorokuko 5 ปีที่แล้ว +1

      Да, абсолютно верно написано. В этом примере размеры одинаковые, но в общем случае нужно сделать как сделал он, только размеры массива правильные указать.

  • @ВикторХалявин-щ7э
    @ВикторХалявин-щ7э 3 ปีที่แล้ว

    не работает передача с ключевым словом const , вот не работает и все

  • @metalhead-mh1864
    @metalhead-mh1864 3 ปีที่แล้ว

    Пишу тот же код, но цифры разные

    • @metalhead-mh1864
      @metalhead-mh1864 3 ปีที่แล้ว

      Ааа я тоже два раза написал Fillarray, надо было удалить

  • @fluman4953
    @fluman4953 5 ปีที่แล้ว

    Есть кто сделал с двумерным массивом? дайте код, а то у меня как то не так получилось

    • @fluman4953
      @fluman4953 5 ปีที่แล้ว +1

      Если вдруг кого интересует держите, всё работает.
      Если вдруг посмотрит опытный программист скажи пожалуйста, Верно ли всё или можно как то сделать получше.
      #include
      #include
      using namespace std;
      void fillarray(int** const arr, int row, int col);
      void showarray(int** const arr, int row, int col);
      void main()
      {
      setlocale(LC_ALL, "rus");
      srand(time(NULL));
      int row = 5;
      int col = 5;
      int** FirstArray = new int* [row];
      int** SecondArray = new int* [row];
      for (int i = 0; i < row; i++)
      {
      FirstArray[i] = new int[col];
      }
      for (int i = 0; i < row; i++)
      {
      SecondArray[i] = new int[col];
      }
      fillarray(FirstArray, row, col);
      fillarray(SecondArray, row, col);
      cout

  • @Night_Raven112
    @Night_Raven112 ปีที่แล้ว

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

    • @МаринаНикифорова-б2п
      @МаринаНикифорова-б2п ปีที่แล้ว +1

      Ваш способ подойдёт при копировании массивов с одинаковым количеством элементов. Если кол-во элементов у массивов разное, о чем рассказывал автор в видео, необходимо удалить старый массив и создать новый с другим кол-вом элементов)

  • @Счастливывместе-у3й
    @Счастливывместе-у3й 3 ปีที่แล้ว +3

    Это не копирование массивов, а перемещение данных.

    • @konstantingurtovoy5709
      @konstantingurtovoy5709 3 ปีที่แล้ว

      Перемещение, это если бы оригинальный массив удалялся сразу после копирования. Здесь - копирование. Но думаю за полгода это стало понятно

  • @Замечательныймир
    @Замечательныймир 5 ปีที่แล้ว +3

    Чтобы понять это, мне пришлось немного пострадать!

  • @оксидводорода2
    @оксидводорода2 4 ปีที่แล้ว

    void Swap(int* arr,int*arr2, const int SIZE)
    {
    for (int i = 0; i < SIZE; i++)
    {
    swap(arr[i], arr2[i]);
    }
    }
    Почему эту функция не использовать бы ?
    с Swap проще же

  • @VKohai_vk
    @VKohai_vk 4 ปีที่แล้ว +1

    Если первый массив больше по размеру второго то ничо не выйдет

    • @andreyvolkov3117
      @andreyvolkov3117 4 ปีที่แล้ว

      при удалении данных по указателю во всех массивах кроме одного, всё будет ок

    • @andreyvolkov3117
      @andreyvolkov3117 4 ปีที่แล้ว

      только надо будет всё-равно указывать 2-ой параметр, чтобы не выводить рандомное значение

  • @Artem_Kovalchuk
    @Artem_Kovalchuk 5 ปีที่แล้ว

    Один раз посмотрел - скопировал одномерный массив.
    Второй раз посмотрел - скопировал двумерный массив.
    Что дальше?

    • @Marmarmelades
      @Marmarmelades 4 ปีที่แล้ว +3

      Скопируй трёхмерный массив
      😂😂

  • @saluteismyname
    @saluteismyname 2 ปีที่แล้ว

    Ребят, а зачем вообще удалять первый массив и выделять ему новую память, если значения можно скопировать в старые ячейки? Это же динамический массив.
    UPD: То же самое можно сделать и со статическим массивом.

    • @infinity-w
      @infinity-w 2 ปีที่แล้ว +1

      В статическом массиве размер известен до компиляции, а в динамическом может быть задан в ходе выполнения программы, НО размер массива не может быть переопределён более одного раза. Многократно увеличивать размер может не массив, а Вектор, но об этом далее.

  • @simongreyse4171
    @simongreyse4171 6 ปีที่แล้ว +1

    а что если циклом каждую ячейку скопировать в другой массиу?

  • @Kokurorokuko
    @Kokurorokuko 5 ปีที่แล้ว +1

    Зачем удалять уже выделенное место для первого массива и выделять новое, если можно эти выделенные места заполнить поочерёдно данными из второго массива?

    • @ХватовМаксим
      @ХватовМаксим 5 ปีที่แล้ว +4

      Размеры массивов может различаться, если мы продолжим делать, как ты говоришь, то есть вероятность выхода за пределы массива, что непременно приведет к ошибке.

  • @skorp291
    @skorp291 7 ปีที่แล้ว +1

    #include
    using namespace std;
    void zapolnenie_arr(int *arr, int size)
    {
    for (int i = 0; i < size; i++)
    {
    arr[i] = rand() % 10;
    }
    }
    void show_arr(int *arr, int size)
    {
    for (int i = 0; i < size; i++)
    {
    cout

  • @debaf1029
    @debaf1029 5 ปีที่แล้ว

    2019 год , 6 апреля на видео 1 дизлайк... это круто

  • @fegek
    @fegek 4 ปีที่แล้ว

    НЕ ВЕРЮ(((

  • @Ms001man
    @Ms001man 6 ปีที่แล้ว +1

    Спасибо за урок!

  • @АлександрОсанадзе-о5л
    @АлександрОсанадзе-о5л 5 ปีที่แล้ว +1

    Спасибо Большое!

  • @РусланКарнеенко
    @РусланКарнеенко 11 หลายเดือนก่อน

    спасибо