#27. Указатели. Приведение типов. Константа NULL | Язык C для начинающих

  Рет қаралды 18,928

selfedu

selfedu

Күн бұрын

Практический курс по C/C++: stepik.org/cou...
Телеграм-канал: t.me/java_and_c
Инфо-сайт: proproprogs.ru...
Указатели для работы с разными типами данных. Присваивание адресов между указателями. Приведение типов между указателями. Предопределенная константа NULL.

Пікірлер: 40
@Al-en6nj
@Al-en6nj Жыл бұрын
Спасибо большое за Ваш труд
@donfedor007
@donfedor007 Жыл бұрын
Спасибо огромное за Ваш труд!
@MegaGalver
@MegaGalver Жыл бұрын
Замечательные объяснения!
@andredru4278
@andredru4278 Жыл бұрын
Спасибо. Все понятно.
@РусланКарнеенко
@РусланКарнеенко Жыл бұрын
Спасибо
@jamjam3337
@jamjam3337 Жыл бұрын
спасибо!👏👍
@Norskium
@Norskium Жыл бұрын
Балин, я уже с# учу, дали бы мне курс месяцев 7 назад(когда я учил си по курсам Гоши дударя) я бы учил бы си)
@Maksim534
@Maksim534 Жыл бұрын
Идёт уже второй урок, так и не понимаю, для чего указатели, без объявления переменной они не работают, при объявлении переменной в памяти итак выделяется место, тогда какую функцию несут указатели? Определить точное место куда мы будем записывать значение? Для подмена типа данных?
@VladLyashko
@VladLyashko Жыл бұрын
Здраствуйте,спасибо за инфо,хотелось в будущем вин апи
@vkatasonov
@vkatasonov Жыл бұрын
Спасибо большое за эту серию уроков. Можете пожалуйста поделиться тем, как запускается программа для отладки в VSCode, чтобы не компилировать каждый раз через gcc
@selfedu_rus
@selfedu_rus Жыл бұрын
Спасибо! Ставится точка останова и нажимаете Ctrl+Shift+D (у меня так, Run and Debug).
@andrey_sautenko
@andrey_sautenko Жыл бұрын
Сергей, здравствуйте! может я что-то не уловил, но пока так и не ясен самый главный смысл , т.е. "сакральность" указателей. Ну можем мы работать с ячейкой памяти напрямую через указатель, можем через переменную и.....все? Или тема указателей еще не закрыта? Если что, заранее извиняюсь за нетерпение))))
@selfedu_rus
@selfedu_rus Жыл бұрын
да, это все еще впереди, когда речь пойдет о массивах и функциях, там они проявляются во всей красе ))
@andrey_sautenko
@andrey_sautenko Жыл бұрын
@@selfedu_rus спасибо за ответ!) тогда жду следующие лекции!
@saintshell3190
@saintshell3190 Жыл бұрын
Когда курс на степике появится? ПС: пните когда откроют, спасибо ^_^
@КРУГДРУЗЕЙ-д1в
@КРУГДРУЗЕЙ-д1в Жыл бұрын
объясните пожалуйста тупому (6:57) в какой системе счисления 777 = 9 + 256 *3 (запись в байтах 9 3 0 0) и 769 = 1 + 256 *3 (запись в байтах 1 3 0 0). В шестнадцетиричной системе должны быть цифры 777(запись в байтах 0 3 0 9) и 769 (запись в байтах 0 3 0 1). Не могу разобраться
@svvonline1
@svvonline1 Жыл бұрын
Ну смотрите, integer - это 4 байта (в данном случае). В шестнадцатиричной системе 0x 00 00 03 09. Представление в памяти идет с младшего байта к старшему, т.е. 0x 09 03 00 00, в отличии от привычной записи. Ну и следует отметить, что в шестнадцатиричной системе один разряд - это 4 бита. Заменив значение 4 бит на значение байтов получим 9300, т.е 09=9, 03=3, 00 =0. Отвечая на ваш вопрос - это или десятиричная или шетнадцатеричная система - для одного байта - это неважно, так как значения (9 и 3) не превышает 9. Что касается выражений 777 = 9 + 256 *3 и 769 = 1 + 256 *3 это типа 256 битной системы счисления, т.е. основание 256 - т.е. диапазон одного байта, а далее каждому разряду соответствует степень основания, младшему 9 - 0 степень, т.е. 9 * 256 ** 0, следующему 3 - 1, т.е. 3 * 256, следующему 0 - 2 степень, т.е. 0 * 256 *256 и так далее. Как в любой позиционой системе счисления.
@sxnity6808
@sxnity6808 7 ай бұрын
Немного добавлю парня выше. Информацию в памяти можно представлять в двух последовательностях: big endian и little endian. В случае с примером Сергея у него little endian машина как и большинства. Это означает что младшие **байты** идут первыми. Наглядный пример: 2048 2048 в двоичной системе исчисления 0000 1000 0000 0000. В 16ричной системе 08 00. Тут 08 это старший **байт**, следовательно 00 младший **байт**. В случае с little endian компьютер сохранит 08 00 как: 00 08.
@CraNok55
@CraNok55 7 ай бұрын
8:17 значение - 769, код выполнился за 769 миллисекунд. Совпадение? 🤨
@sad-wl2qk
@sad-wl2qk 6 ай бұрын
С 769 осторожно. Поведение будет зависеть от порядка хранения байт в памяти платформы , в Intel x86 это будет Little Endian
@tarzeronone7274
@tarzeronone7274 Жыл бұрын
После С будут плюсы? Хотелось бы в таком виде просмотреть курс по Rust
@Eugene-p2o
@Eugene-p2o Жыл бұрын
плюсы же уже есть
@tarzeronone7274
@tarzeronone7274 Жыл бұрын
@@Eugene-p2o О спасибо, не видел их, нужно просмотреть, тогда жду rust
@catsaur5991
@catsaur5991 Жыл бұрын
Друзья, а как все-таки правильно, нулл или налл ?) И еще, а что за зажигательный музон играет в конце каждого видео? Усидеть на месте, нереально! А видос познавательный, ждем еще.
@segeus
@segeus Жыл бұрын
Если по-английски то НАЛ Если по-немецки то НУЛь
@catsaur5991
@catsaur5991 Жыл бұрын
@@segeus а по китайски вроде вот так - 空值 .
@azatmuhitov3098
@azatmuhitov3098 Жыл бұрын
18 недоступных видео скрыто. это как?
@DekartMusic
@DekartMusic Жыл бұрын
А можно вопрос, откуда вы учились у Си? Просто после вашего курса я хочу еще почитать литературы, в том числе и Книга Герберта Шилдта "Си, полное руководство, классическое издание", и там можно создать свой ЯП, или мне еще придется читать литературу?
@selfedu_rus
@selfedu_rus Жыл бұрын
Сложно мне ответить на ваш вопрос. Просто я его 20 лет назад осваивал и потом много использовал в проектах (правда там был С++, но не суть). Сейчас, чтобы все детали верно озвучивать, ориентируюсь на книги Стивена Пратта и Столярова Искусство программирования.
@donfedor007
@donfedor007 Жыл бұрын
Ответ на вопрос чем плохи переменные будет дальше?
@selfedu_rus
@selfedu_rus Жыл бұрын
да
@1975nacgul
@1975nacgul 10 ай бұрын
int это же 2 байт илм 16 бит, а увас 4 байта. Как так? .
@selfedu_rus
@selfedu_rus 10 ай бұрын
в 32 и 64-разрядных системах, как правило, 4 байта
@1975nacgul
@1975nacgul 10 ай бұрын
@@selfedu_rus т.е. не обязательно, по-желанию.
@5классвиленкин-ъ4п
@5классвиленкин-ъ4п 9 ай бұрын
@@1975nacgulпо желанию чьему? Нужно по-разному смотреть на каждую систему
@СергейК-л5д3ч
@СергейК-л5д3ч Жыл бұрын
Так и не объяснил для чего нужны указатели, работать с адресом ну да, а какой от этого толк, ни один программист не может толком объяснить, такое ощущение что всем сказали писать эмперсанд арк и все пишут, то-ли не знают то-ли не понимают просто пишут звёздочку и эмперсанд
@selfedu_rus
@selfedu_rus Жыл бұрын
об этом дальше, когда дойдем до функций, также будет пример с динамическим массивом
@sembips5631
@sembips5631 10 ай бұрын
В примитивных программах в целом то и не нужны. Банально любую структуру данных без указателей не реализовать
@Mifka238
@Mifka238 16 күн бұрын
если просто: указатели экономия памяти. будет чувствительная разница: разместить в в памяти структуру (на 100 кб) или указатель на структуру.
@alittleprince
@alittleprince Жыл бұрын
Почему сразу так не сказать?..Вся тема в нескольких основных тезисах: (извините, я конспект пишу за Вами на английском) Pointers are designed to write and read data from any memory cells and store theirs addresses with data. They are denoted witn the sign '*', for example, as 'char *gpt' and divided into the following variable types: char *gpt; (memory area - 1 byte), int *gpt; (memory area - 4 bytes), double *gpt; (memory area - 8 bytes). The pointers in OSx86 - is allocated 4 bytes of memory; in OSx64 - is allocated 8 bytes of memory. Pointer notation construction: chat d = 10; memory allocation operation for the variable 'd'; char *gpt; declaration of pointer for working with data type 'char'; gpt = &d; assignment operation of value 'd' to pointer 'gpt'; char x = *gpt; value read operation from memory cell of variable 'd'; *gpt = 100; value write operation to memory cell of variable 'd'; short *a, *b, *c; declaration of 3 pointers in one data type.*/ General expression type 'void *' is used to save adresses of variables, but it is not to use with memory cells (*p = 10; : error: invalid use of void expression); Pointers. Practice problems: - when pointer refers to an unallocated memory area and some value is bieng written. - when memory is in a program dynamically allocated (by using 'malloc'function) and not freed (memory leak). Example: //int arg = 5; //int *ptr = NULL; //NULL is equivalent to &arg, int *ptr = &arg; //If(ptr != NULL) // *ptr = 1; // А у Вас столько слов на три видео растянуто и в итоге голова кругом и сложнее для понимания ...
Леон киллер и Оля Полякова 😹
00:42
Канал Смеха
Рет қаралды 4,7 МЛН
UFC 310 : Рахмонов VS Мачадо Гэрри
05:00
Setanta Sports UFC
Рет қаралды 1,2 МЛН
Сестра обхитрила!
00:17
Victoria Portfolio
Рет қаралды 958 М.
Адреса и указатели в Си. Адресная арифметика
27:47
Тимофей Хирьянов
Рет қаралды 169 М.
Изучение Си в одном видео уроке за час!
57:15
Гоша Дударь
Рет қаралды 525 М.
Леон киллер и Оля Полякова 😹
00:42
Канал Смеха
Рет қаралды 4,7 МЛН