Язык Си для начинающих / #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
человек за 14 минут смог ясно объяснить то, что мой препод безуспешно пытался разжевать полтора часа на лекции, вот что значит талант)
Програмирование вообще намного лучше изучается самостоятельно. Я за недельку летом взял материал расчитаный на пол года (правда немного по другому языку брал, но основы везде почти одинаковые)
@@armorredRT согласен с вами) очень жаль, что университетские дедлайны и работы по другии предметам не позволяют в полной мере погрузиться в программирование
Автор не поримает что такое указатели и зачем они
Пока что не задумывался об изучении этого языка, но С++, С# и многие другие курсы(2d игра на unity) помогают мне узнать что-то новое. Спасибо большое за то, чем ты занимаешься
дано : квардат, а = 5, б = 7 :))))))
@@user-pd1ro8pc1i попробуй воспользоваться переводчиком. Может поможет :)))
Сам все от и до проговорил, очень помогает объяснение самому себе.
1. Создал структуру под названием Скетч в которую входит две переменных, параметра (ширина и высота).
2. Создал объекты дом, гараж, офисное помещение и поместил их в функцию мейн.
3. Потом создал функцию подсчета площади помещения, указал параметр (любой объект из структуры Скетч), внес в функцию формулу расчета.
4. Потом в функции мейн вызывал функцию подсчета площади для разных объектов.
5. Ну и конечно же применил вызов объектов по адресу для ускорения работы программы.
** И как вы учили в прошлых занятиях, я разместил функцию расчета и структуру в головном файле и импортировал его в файл с функцией мейн.
В общем еще раз спасибо за объяснение! Очень вам благодарен) Скоро еду на интенсив, в школу 21, а там все будет на Си)
Никогда не думал, что скажу это. Но ты понятно обьясняешь.
Спасибо, я всё думал, зачем присвоивать одному значению две переменные, а оказывается вот оно как
можешь сделать урок по созданию плагинов, будь то для sublime text, visual studio code или атом
сложновато конечно на первый слух , но объясняет грамотно и поставленно
Очень годно, круто было бы, если бы в ближайших уроках объяснил, как работают списки
Круто, классно и четко.
На этапе указателей у меня всегда взрывался мозг! И книга летела в мусорку пинками от комнаты до самой дальней мусорки в городе.
Указатели - это легко.
Хорошо.
У тебя двумерный массив. [0]=15, [1]=смотри в [0].
Зачем? Почему он быстрее? Почему не обратиться к значению а не адресу?
Была одна строка с объявлением переменной, нет, лучше и легче если мы добавим ещё строчек кода для определения указателя. Создадим дополнительную переменную для хранения адреса.
Для чего? Зачем было так долго рассказывать об объявлении переменных, использовать работу с ними если по факту ты сейчас сказал, что с ними работать нельзя, кроме как через указатели?
И да, давай ещё добавим говна на вентилятор? Нате * и &.... Разбирайтесь!
чувак, я не гуру, но почитай про поток ввода.
Указатель - морковка. Функция - осел. Намного легче нести с собой морковку, чтобы осел за ней бежал, чем хватать осла и нести.
Результат хоть и одинаков, но энергозатраты во втором случае выше.
Можно скинуть в мессенджер ссылку на этот видосик а можно и сам тяжёлый файл. А там по ситуации что лучше сам выбирай.
Все очень доходчиво объяснил, спасибо большое за контент! Было бы еще лучше показать начинающим реальные цифры ускорения выполнения кода. Например, как Вы уже сказали, с «большим» массивом
dotazaur массивы априори передаются по указателю.
да, был бы смысл сделать долгое вычисление и показать разницу в подходах.
Начинающим такие данные максимально бесполезно знать, т.к применяется только на высоких уровнях проги)
Гоша это лайки для тебя ты лучший программист
нет. Он просто копирует другие видосы. Ну как человек может знать все языки? он что только не пробовал. канал для получения денег, а не из-за идеи
@@andrewbpc бред за такие просмотры он нечего не получает, он знает много языков на уровне junior. видосы эти сделаны чтобы дать основу а потом уже сам идешь в глубину языка
@@user-jn3vm1rz4z С чего ты взял? на его сайте полно рекламы. Ты говоришь, что он просто даёт базу. Но он просто копирует менее популярные каналы. Да и в видео реклама есть
Но он знает нормально
Я согласен с@@andrewbpc ом Гоша копируют все это все для деньги
А можно использовать & отдельно для получения адреса переменной и называть это указателем?
супер
Ярлык тоже является по сути адресом? (Когда мы создаем на рабочем столе ярлык запуска приложения к примеру).
Спасибо, очень доходчиво, но конкретно в этом уроке не совсем поняла почему где-то & ставится а где-то * ?
Оператор взятия адреса, & , возвращает адрес его операнда.
Оператор косвенного обращения, * , возвращает значение, на которое указывает переменная-указатель. (Это
называют разыменованием указателя)
Покурите пример -
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
@@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
@@mikhail8376 используют то, что удобно. Понятно, что крутым погромистам видно сразу, что 5240632 равно 4FF738 и поэтому для них конечно ж надо православный %p.
Дякую, декілька статей читав, та й нічого не зрозумів. А тут одразу на початку відео дається відповідь для чого вказивники - для швидкості виконання.
👍
Чувак что бы знаешь про реверс инженеринге, как отслеживать https траффик, расскажи что нибудь?
Малвари писать хочешь Что-ли Xd)?
Можно спросить, не проще ли взять переменные и найти их произведение в следующей строке, чем разобрать на отдельные функций.
Проще конечно. Простой пример для понимания.
Представьте что у вас 100 массивов по 1000 значений(массив на 100 элементов, каждый из которых указатель на другой массив) и вам нужно знать к примеру максимальное значение каждого массива. Вот тут вы в цикле передаёте в функцию указатель на конкретный массив, функция новый массив не создаёт а работает с тем, адрес которого дали. Потом функция возвращает результат и так 100 раз.
Все таки основная функция указателей это изменение исходной переменной.
Можно было бы в цикле на 1'000 или 10'000 или 100'000 итераций, сравнить скорость отработки через аргумент или по его адресу. Было бы нагляднее!
В отладчике... А у него не висуал студия)
Зачем объект в функции называть obj если его можно было назвать square ?
Буду очень благодарна, если кто-то объяснит 😌
Как по мне, название obj только запутывает
obj - object
Актуально для микроконтроллеров
А массивы уже передаются по значению?
массивы тоже можно тоже передать по ссылке главное помнить что указатель на массив это указатель на его 1 элемент
Pinux Man в C нет ссылок
согласен, Гоша сам не знает чему учит.
@@thebuckzor688 больше так никогда не говори
Классный квадрат с разными сторонами
Классное знание английского (square это ещё площадь)
@@screenchat2275 Да, но он это не уточнил, так что у меня полное право на этот комментарий
Человек на видео рассказывает кромешную дичь: смешал в кучу все - указатели,адреса, хэш каким то боком у него оказался, язык си исполняется у него как скрипт и так далее.
аматор
про хеш меня тоже удивило ...чел походу вообще не понимает что такое хэш а что такое адрес памяти.
@@AntiBandera а что это такое?
это не хеш это просто адрес памяти !
Мне одному кажется, что на 9:00 полный бред?))
printf("%d
", num);
printf("%d
", *pNum);
Нет, не бред.
квадрат*??? а ничего чт у квадрата стороны равны ?????
душнила дэтэктэд
Душнила
Помимо значения "квадрат" у слова square есть значение "площадь"
Автор не поримает что такое указатели р зачем они
Так сними видео, расскажи.
епта все равно не осилил