Дмитрий, я очень Вам благодарен за курс "Программирование на Си с нуля". С удовольствием пересмотрел все уроки, очень помогло при подготовке к сессии. Благослови Вас Господь! Ещё раз спасибо.
@FromtheLAMERtotheProgrammer8 жыл бұрын
Рад был помочь! ) кстати курс еще не закончен )
@yevhenukrainianer47816 жыл бұрын
Хороший практический пример (лучший из 3 что я увидел, пока искал, что мне надо), позвольте поправку: используете в циклах инкрементацию указателя вида: *p_mass_number++; *p_mass_char++; Приоритет операций справа налево: 1) сначала инкрементируется указатель 2) а потом берется значение по адресу после инкрементирования Разыменовывание Вам здесь не требуется, т.к. Вы всего лишь прошагиваете по указателю, тем более что разыменованный результат возвращается в никуда, т.к. никакая переменная результат не присваивает. Достаточно писать: p_mass_number++;
@СергейПресняков-о4р5 жыл бұрын
Спасибо. Я уже начал думать что указатели перестал понимать, что *p_mass_number++ просто инкрементирует значение первого элемента, т. е. рисует числа от 1 до 10 самостоятельно, а не берёт их из массива. Теперь стало понятнее.
@nadyamoscow24614 жыл бұрын
Огромное спасибо за ваши уроки - самые понятные объяснения для новичка!
@ИльяЯгупов-н4я5 жыл бұрын
Спасибо большое за такой хороший урок! Всё последовательно и понятно!
@pequeno22887 жыл бұрын
Ваш адрес меняется потому, что меняется адрес памяти выделенной компьютером для работы программы, а он выделяет каждый раз новый ,а не перезаписывая (т.к. перезаписывает он в это же место память в других случаях)
@weekendshow75672 жыл бұрын
отличный урок!!!
@StepanChuevYT3 жыл бұрын
19:43 Хочу добавить что адрес увеличивается на sizeof типа указателя, т.е sizeof(int) == 4 соответственно каждый адрес будет увеличиваться на 4, а если бы мы вместо int был бы long long int sizeof(long long int) == 8 адрес будет увеличиваться на 8
@lutsiuk58 жыл бұрын
всегда жду ваших видео уроков! спасибо
@FromtheLAMERtotheProgrammer8 жыл бұрын
Рад что нравятся уроки )
@aleksandrchepaikin95705 жыл бұрын
в цикле лучше делать так *(p_mass_number + i). А то легко себе в ногу выстрелить если в большой программе проинкрементировать указатель который где то еще может использоваться. Советую после просмотра еще что нибудь почитать. Для полного понимания темы этого не достаточно. Спасибо автору за объяснение столь важной темы доступным языком)))
@777noob777saibot3 жыл бұрын
Почему адрес на первый элемент массива берётся без оператора & ? Должна быть причина. int* ptr = array;
@namename20313 жыл бұрын
26:15 *p_mass_char++; Здесь звёздочку писать не надо. Эта конструкция срабатывает в порядке приоритетов операторов. Сначала инкрементируется адрес указателя, а затем происходит разыменование.
@alexander1997407 жыл бұрын
Получается указатель служит для того, чтобы обращаться к какой то переменной и при этом он экономит место в оперативной памяти?
@Академияразработчиков5 жыл бұрын
Место он не экономит, скорее наоборот. При передаче параметров в функцию можно выиграть передав указатель на что-то большое.
@majach22224 жыл бұрын
@@Академияразработчиков 'При передаче параметров в функцию' - аргуентов а не параметров! Параметры передаютца программе!
@Академияразработчиков4 жыл бұрын
@@majach2222 согласен)
@androidjenyokcoder47397 жыл бұрын
Если не ошибаюсь, каждый раз как Вы запускаете скомпилированную программу в терминале, создается процесс и операционная система резервирует для него память. Если нужен одинаковый адрес - Shared Memory (IPC - взаимодействие между процессами) А так в целом ничего... Спасибо за труд.
@FromtheLAMERtotheProgrammer7 жыл бұрын
И вам спасибо за просмотр и комментарий.
@AlexxDo7 жыл бұрын
еще можно добавить что можно было не отдельно инкрементировать указатель, а сделать такую запись: fprintf(stdout, "Index[%d], value[%d], points[%p] ", i, *p_mass_number++, p_mass_number); //просто я еще прату параллельно пытаюсь читать спасибо за уроки, Дмитрий.
@FromtheLAMERtotheProgrammer7 жыл бұрын
Пожалуйста.
@yevhenukrainianer47816 жыл бұрын
Alexx Do, здесь нельзя так инкрементировать, ибо обращение по указателю производится дважды, а в вызове ф-ии не гарантирован порядок обработки формальных параметров. Вы не можете быть уверены, инкрементируется после того, как в двух местах значение возьмется прдыдущее. Это плохая практика, и повезет, если компилятор под Вашу ОС сделает так, как вы захотели.
@yevhenukrainianer47816 жыл бұрын
Подскажите, зачем компилятору указваете целевой файл.exe в GNU\Linux? Есть какая-то цель? Спасибо.
@Alex-dw3pn5 жыл бұрын
Я конечно понял что *p_muss_number++ это тоже самое что и p_muss_number=p_muss_number+1, а не *p_muss_number=*p_muss_number+1. Но почему так?.. Как это функционирует
@boristsaikin13 жыл бұрын
Кто-то скажет, что вы недостаточно профессиональны! А я , как начинающий, скажу вам, что наоборот нравится, как вы ошибаетесь, а потом ищете ошибки и исправляете! Для начинающего это самое то, потому как именно на ошибках и учится программист!
@ghtrtjshs3 жыл бұрын
4:41 ште
@shtas897 жыл бұрын
Дмитрий, а можете подробней объяснить роль указателей. Если я могу написать просто название переменной, то зачем мне декларировать указатель и использовать его. В каких случая их используют при написании реальных программ?
@FromtheLAMERtotheProgrammer7 жыл бұрын
Указатель - переменная, содержащая адрес объекта. Указатель не несет информации о содержимом объекта, а содержит сведения о том, где размещен объект. Указатель может напрямую менять значение которое присвоено переменной на которую указывает указатель к примеру числа, строки. Посмотри видео 35 и увидишь в чем польза указателя на конкретном примере. Указатели часто используются в программировании на Си, но тема довольно таки не из легких ) особенно когда есть мудренные записи с указателями )
@incyberideas4 жыл бұрын
Указатель вы можете передать в другую функцию, она там с ним поработает прямо с данными в ячейке, и потом вернет вам указатель на эти данные назад. Разные подфункции не видят переменные друг друга. Автор не раскрыл этот и некоторые другие важные моменты указателя.
@ДанилТверской-ь8ф6 жыл бұрын
Хороший урок
@mihannic79297 жыл бұрын
Дмитрий ...я тоже хочу Вас по благодарить за уроки. Хотелось бы что бы Вы наглядно приводили примеры где это может использоватся ....тогда это будет еще большим стимулом для прохождения любого из Ваших курсов. Было бы на много интересней и доходчивей. Согласны?Спс за уроки.
@yevhenukrainianer47816 жыл бұрын
Мне приходится это использовать в программировании Ардуино в проекте умного дома, т.к. на этой плате мало памяти в сравнении с ПК, и указатели в разрезе нужной структуры дают гибкие и экономные решения.
@ВикторСорокин-ч3м5 жыл бұрын
13:32 Зачем тогда делать отдельную переменную и приравнивать ее к массиву? Используй massiv да и все, как адрес массива ... к чему эти роги?
@incyberideas4 жыл бұрын
а как вы поступите если размер массива заранее не определён?
@jojomeme8677 жыл бұрын
спасибо
@ЕвгенийБугрим-о3у5 жыл бұрын
На вывод строки тратится больше времени нежели на объяснение что такое указатель. Подготовиться надо было, а то сочиняешь на ходу.