Язык Си для начинающих / #8 - Указатели в Си

แชร์
ฝัง
  • เผยแพร่เมื่อ 26 เม.ย. 2020
  • Язык Си позволяет оптимизировать передачу различных данных в функции и объекты за счёт указателей. За урок мы научимся создавать, а также работать с указателями в языке Си.
    1) Урок на сайте itProger: itproger.com/course/c-program...
    ✔ Сообщество программистов: itproger.com/
    ✔ -------------
    Вступай в группу Вк - prog_life 🚀
    Группа FaceBook - goo.gl/XW0aaP
    Инстаграм itProger: / itproger_official
    Instagram: / gosha_dudar
    Telegram: t.me/itProger_official
    Twitter - / goshadudar
    - Уроки от #GoshaDudar 👨🏼‍💻
    - Все уроки по хештегу #goshaLessons

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

  • @artemass9554
    @artemass9554 ปีที่แล้ว +50

    человек за 14 минут смог ясно объяснить то, что мой препод безуспешно пытался разжевать полтора часа на лекции, вот что значит талант)

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

      Програмирование вообще намного лучше изучается самостоятельно. Я за недельку летом взял материал расчитаный на пол года (правда немного по другому языку брал, но основы везде почти одинаковые)

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

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

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

      Автор не поримает что такое указатели и зачем они

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

    Пока что не задумывался об изучении этого языка, но С++, С# и многие другие курсы(2d игра на unity) помогают мне узнать что-то новое. Спасибо большое за то, чем ты занимаешься

  • @Haidanweem
    @Haidanweem 3 ปีที่แล้ว +63

    дано : квардат, а = 5, б = 7 :))))))

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

      @@user-pd1ro8pc1i попробуй воспользоваться переводчиком. Может поможет :)))

  • @mksmvnv
    @mksmvnv 8 หลายเดือนก่อน +2

    Сам все от и до проговорил, очень помогает объяснение самому себе.
    1. Создал структуру под названием Скетч в которую входит две переменных, параметра (ширина и высота).
    2. Создал объекты дом, гараж, офисное помещение и поместил их в функцию мейн.
    3. Потом создал функцию подсчета площади помещения, указал параметр (любой объект из структуры Скетч), внес в функцию формулу расчета.
    4. Потом в функции мейн вызывал функцию подсчета площади для разных объектов.
    5. Ну и конечно же применил вызов объектов по адресу для ускорения работы программы.
    ** И как вы учили в прошлых занятиях, я разместил функцию расчета и структуру в головном файле и импортировал его в файл с функцией мейн.
    В общем еще раз спасибо за объяснение! Очень вам благодарен) Скоро еду на интенсив, в школу 21, а там все будет на Си)

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

    Никогда не думал, что скажу это. Но ты понятно обьясняешь.

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

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

  • @user-pn7gq3gk1m
    @user-pn7gq3gk1m 4 ปีที่แล้ว +2

    можешь сделать урок по созданию плагинов, будь то для sublime text, visual studio code или атом

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

    сложновато конечно на первый слух , но объясняет грамотно и поставленно

  • @user-wc5yi6gv1k
    @user-wc5yi6gv1k 4 ปีที่แล้ว +11

    Очень годно, круто было бы, если бы в ближайших уроках объяснил, как работают списки

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

    Круто, классно и четко.
    На этапе указателей у меня всегда взрывался мозг! И книга летела в мусорку пинками от комнаты до самой дальней мусорки в городе.
    Указатели - это легко.
    Хорошо.
    У тебя двумерный массив. [0]=15, [1]=смотри в [0].
    Зачем? Почему он быстрее? Почему не обратиться к значению а не адресу?
    Была одна строка с объявлением переменной, нет, лучше и легче если мы добавим ещё строчек кода для определения указателя. Создадим дополнительную переменную для хранения адреса.
    Для чего? Зачем было так долго рассказывать об объявлении переменных, использовать работу с ними если по факту ты сейчас сказал, что с ними работать нельзя, кроме как через указатели?
    И да, давай ещё добавим говна на вентилятор? Нате * и &.... Разбирайтесь!

    • @user-cr2kb4pr9x
      @user-cr2kb4pr9x 3 ปีที่แล้ว +6

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

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

      Можно скинуть в мессенджер ссылку на этот видосик а можно и сам тяжёлый файл. А там по ситуации что лучше сам выбирай.

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

    Все очень доходчиво объяснил, спасибо большое за контент! Было бы еще лучше показать начинающим реальные цифры ускорения выполнения кода. Например, как Вы уже сказали, с «большим» массивом

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

      dotazaur массивы априори передаются по указателю.

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

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

    • @user-lg6vr7ol1n
      @user-lg6vr7ol1n 11 หลายเดือนก่อน

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

  • @FootballWorld-xw1rc
    @FootballWorld-xw1rc 4 ปีที่แล้ว +8

    Гоша это лайки для тебя ты лучший программист

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

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

    • @user-jn3vm1rz4z
      @user-jn3vm1rz4z 4 ปีที่แล้ว

      @@andrewbpc бред за такие просмотры он нечего не получает, он знает много языков на уровне junior. видосы эти сделаны чтобы дать основу а потом уже сам идешь в глубину языка

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

      @@user-jn3vm1rz4z С чего ты взял? на его сайте полно рекламы. Ты говоришь, что он просто даёт базу. Но он просто копирует менее популярные каналы. Да и в видео реклама есть

    • @FootballWorld-xw1rc
      @FootballWorld-xw1rc 4 ปีที่แล้ว

      Но он знает нормально

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

      Я согласен с@@andrewbpc ом Гоша копируют все это все для деньги

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

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

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

    супер

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

    Ярлык тоже является по сути адресом? (Когда мы создаем на рабочем столе ярлык запуска приложения к примеру).

  • @user-li9uo7wu2x
    @user-li9uo7wu2x 3 ปีที่แล้ว +11

    Спасибо, очень доходчиво, но конкретно в этом уроке не совсем поняла почему где-то & ставится а где-то * ?

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

      Оператор взятия адреса, & , возвращает адрес его операнда.
      Оператор косвенного обращения, * , возвращает значение, на которое указывает переменная-указатель. (Это
      называют разыменованием указателя)
      Покурите пример -
      int main()
      {
      int num = 5;
      int *pi = # // присваиваем значение - адрес num
      printf("Address of num: %d Value: %d
      ",&num, num);
      printf("Address of pi: %d Value: %d
      ",&pi, pi);
      printf("The value pointed to by a pointer variable: %d
      ",*pi);
      /*Мы можем также использовать результат оператора разыменования как lvalue.
      Термин lvalue относится к операнду слева от оператора присваивания.
      Все lvalue должны иметь возможность изменения.
      Следующая строчка присвоит 777 переменной num, на которое указывает pi */
      *pi = 777;
      printf("The new value of num: %d
      ",num);
      return 0;
      }
      Результат -
      Address of num: 2293324 Value: 5
      Address of pi: 2293312 Value: 2293324
      The value pointed to by a pointer variable: 5
      The new value of num: 777

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

      @@ohjelmistokehittaja4446 для адреса разве %d используют, а не %p? Если %p, то выдаёт
      Address of num: 004FF738 Value: 5
      Address of pi: 004FF72C Value: 5240632
      The value pointed to by a pointer variable: 5
      The new value of num: 777

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

      @@mikhail8376 используют то, что удобно. Понятно, что крутым погромистам видно сразу, что 5240632 равно 4FF738 и поэтому для них конечно ж надо православный %p.

  • @velaq-tu5vq
    @velaq-tu5vq 7 หลายเดือนก่อน

    Дякую, декілька статей читав, та й нічого не зрозумів. А тут одразу на початку відео дається відповідь для чого вказивники - для швидкості виконання.

  • @user-xn8zi3re6i
    @user-xn8zi3re6i 2 ปีที่แล้ว

    👍

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

    Чувак что бы знаешь про реверс инженеринге, как отслеживать https траффик, расскажи что нибудь?

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

      Малвари писать хочешь Что-ли Xd)?

  • @user-rt5tx9zv1q
    @user-rt5tx9zv1q 4 หลายเดือนก่อน

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

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

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

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

    Все таки основная функция указателей это изменение исходной переменной.

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

    Можно было бы в цикле на 1'000 или 10'000 или 100'000 итераций, сравнить скорость отработки через аргумент или по его адресу. Было бы нагляднее!

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

      В отладчике... А у него не висуал студия)

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

    Зачем объект в функции называть obj если его можно было назвать square ?
    Буду очень благодарна, если кто-то объяснит 😌
    Как по мне, название obj только запутывает

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

    Актуально для микроконтроллеров

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

    А массивы уже передаются по значению?

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

      массивы тоже можно тоже передать по ссылке главное помнить что указатель на массив это указатель на его 1 элемент

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

      Pinux Man в C нет ссылок

    • @someone-rj5fm
      @someone-rj5fm 3 ปีที่แล้ว

      согласен, Гоша сам не знает чему учит.

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

      @@thebuckzor688 больше так никогда не говори

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

    Классный квадрат с разными сторонами

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

      Классное знание английского (square это ещё площадь)

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

      @@screenchat2275 Да, но он это не уточнил, так что у меня полное право на этот комментарий

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

    Человек на видео рассказывает кромешную дичь: смешал в кучу все - указатели,адреса, хэш каким то боком у него оказался, язык си исполняется у него как скрипт и так далее.

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

      аматор

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

      про хеш меня тоже удивило ...чел походу вообще не понимает что такое хэш а что такое адрес памяти.

    • @user-sz2ng8yq3s
      @user-sz2ng8yq3s ปีที่แล้ว

      @@AntiBandera а что это такое?

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

    это не хеш это просто адрес памяти !

  • @user-mm5ln4qh5q
    @user-mm5ln4qh5q ปีที่แล้ว

    Мне одному кажется, что на 9:00 полный бред?))
    printf("%d
    ", num);
    printf("%d
    ", *pNum);

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

      Нет, не бред.

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

    квадрат*??? а ничего чт у квадрата стороны равны ?????

    • @user-sz2ng8yq3s
      @user-sz2ng8yq3s ปีที่แล้ว

      душнила дэтэктэд

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

      Душнила

    • @alex_ra.
      @alex_ra. 6 หลายเดือนก่อน +2

      Помимо значения "квадрат" у слова square есть значение "площадь"

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

    Автор не поримает что такое указатели р зачем они

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

      Так сними видео, расскажи.

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

    епта все равно не осилил