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

  Рет қаралды 13,828

selfedu

selfedu

Күн бұрын

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

Пікірлер: 39
@Al-en6nj
@Al-en6nj Жыл бұрын
Спасибо большое за Ваш труд
@MegaGalver
@MegaGalver Жыл бұрын
Замечательные объяснения!
@donfedor007
@donfedor007 Жыл бұрын
Спасибо огромное за Ваш труд!
@andredru4278
@andredru4278 8 ай бұрын
Спасибо. Все понятно.
@user-xm5zl9up4r
@user-xm5zl9up4r 7 ай бұрын
Спасибо
@jamjam3337
@jamjam3337 Жыл бұрын
спасибо!👏👍
@sad-wl2qk
@sad-wl2qk 2 ай бұрын
С 769 осторожно. Поведение будет зависеть от порядка хранения байт в памяти платформы , в Intel x86 это будет Little Endian
@norskiy9765
@norskiy9765 Жыл бұрын
Балин, я уже с# учу, дали бы мне курс месяцев 7 назад(когда я учил си по курсам Гоши дударя) я бы учил бы си)
@CraNok55
@CraNok55 3 ай бұрын
8:17 значение - 769, код выполнился за 769 миллисекунд. Совпадение? 🤨
@VladLyashko
@VladLyashko Жыл бұрын
Здраствуйте,спасибо за инфо,хотелось в будущем вин апи
@saintshell3190
@saintshell3190 Жыл бұрын
Когда курс на степике появится? ПС: пните когда откроют, спасибо ^_^
@andrey_sautenko
@andrey_sautenko Жыл бұрын
Сергей, здравствуйте! может я что-то не уловил, но пока так и не ясен самый главный смысл , т.е. "сакральность" указателей. Ну можем мы работать с ячейкой памяти напрямую через указатель, можем через переменную и.....все? Или тема указателей еще не закрыта? Если что, заранее извиняюсь за нетерпение))))
@selfedu_rus
@selfedu_rus Жыл бұрын
да, это все еще впереди, когда речь пойдет о массивах и функциях, там они проявляются во всей красе ))
@andrey_sautenko
@andrey_sautenko Жыл бұрын
@@selfedu_rus спасибо за ответ!) тогда жду следующие лекции!
@Maksim534
@Maksim534 11 ай бұрын
Идёт уже второй урок, так и не понимаю, для чего указатели, без объявления переменной они не работают, при объявлении переменной в памяти итак выделяется место, тогда какую функцию несут указатели? Определить точное место куда мы будем записывать значение? Для подмена типа данных?
@vkatasonov
@vkatasonov Жыл бұрын
Спасибо большое за эту серию уроков. Можете пожалуйста поделиться тем, как запускается программа для отладки в VSCode, чтобы не компилировать каждый раз через gcc
@selfedu_rus
@selfedu_rus Жыл бұрын
Спасибо! Ставится точка останова и нажимаете Ctrl+Shift+D (у меня так, Run and Debug).
@tarzeronone7274
@tarzeronone7274 Жыл бұрын
После С будут плюсы? Хотелось бы в таком виде просмотреть курс по Rust
@user-im7ho4xj2u
@user-im7ho4xj2u Жыл бұрын
плюсы же уже есть
@tarzeronone7274
@tarzeronone7274 Жыл бұрын
@@user-im7ho4xj2u О спасибо, не видел их, нужно просмотреть, тогда жду rust
@catsaur5991
@catsaur5991 Жыл бұрын
Друзья, а как все-таки правильно, нулл или налл ?) И еще, а что за зажигательный музон играет в конце каждого видео? Усидеть на месте, нереально! А видос познавательный, ждем еще.
@segeus
@segeus Жыл бұрын
Если по-английски то НАЛ Если по-немецки то НУЛь
@catsaur5991
@catsaur5991 Жыл бұрын
@@segeus а по китайски вроде вот так - 空值 .
@user-dz8vu2hn2m
@user-dz8vu2hn2m 10 ай бұрын
объясните пожалуйста тупому (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 8 ай бұрын
Ну смотрите, 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 2 ай бұрын
Немного добавлю парня выше. Информацию в памяти можно представлять в двух последовательностях: big endian и little endian. В случае с примером Сергея у него little endian машина как и большинства. Это означает что младшие **байты** идут первыми. Наглядный пример: 2048 2048 в двоичной системе исчисления 0000 1000 0000 0000. В 16ричной системе 08 00. Тут 08 это старший **байт**, следовательно 00 младший **байт**. В случае с little endian компьютер сохранит 08 00 как: 00 08.
@user-yx8oe2pg8m
@user-yx8oe2pg8m Жыл бұрын
А можно вопрос, откуда вы учились у Си? Просто после вашего курса я хочу еще почитать литературы, в том числе и Книга Герберта Шилдта "Си, полное руководство, классическое издание", и там можно создать свой ЯП, или мне еще придется читать литературу?
@selfedu_rus
@selfedu_rus Жыл бұрын
Сложно мне ответить на ваш вопрос. Просто я его 20 лет назад осваивал и потом много использовал в проектах (правда там был С++, но не суть). Сейчас, чтобы все детали верно озвучивать, ориентируюсь на книги Стивена Пратта и Столярова Искусство программирования.
@azatmuhitov3098
@azatmuhitov3098 Жыл бұрын
18 недоступных видео скрыто. это как?
@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; // А у Вас столько слов на три видео растянуто и в итоге голова кругом и сложнее для понимания ...
@donfedor007
@donfedor007 Жыл бұрын
Ответ на вопрос чем плохи переменные будет дальше?
@selfedu_rus
@selfedu_rus Жыл бұрын
да
@1975nacgul
@1975nacgul 5 ай бұрын
int это же 2 байт илм 16 бит, а увас 4 байта. Как так? .
@selfedu_rus
@selfedu_rus 5 ай бұрын
в 32 и 64-разрядных системах, как правило, 4 байта
@1975nacgul
@1975nacgul 5 ай бұрын
@@selfedu_rus т.е. не обязательно, по-желанию.
@5классвиленкин-ъ4п
@5классвиленкин-ъ4п 4 ай бұрын
@@1975nacgulпо желанию чьему? Нужно по-разному смотреть на каждую систему
@user-kr5dk2ko1s
@user-kr5dk2ko1s 9 ай бұрын
Так и не объяснил для чего нужны указатели, работать с адресом ну да, а какой от этого толк, ни один программист не может толком объяснить, такое ощущение что всем сказали писать эмперсанд арк и все пишут, то-ли не знают то-ли не понимают просто пишут звёздочку и эмперсанд
@selfedu_rus
@selfedu_rus 9 ай бұрын
об этом дальше, когда дойдем до функций, также будет пример с динамическим массивом
@sembips5631
@sembips5631 5 ай бұрын
В примитивных программах в целом то и не нужны. Банально любую структуру данных без указателей не реализовать
At the end of the video, deadpool did this #harleyquinn #deadpool3 #wolverin #shorts
00:15
Anastasyia Prichinina. Actress. Cosplayer.
Рет қаралды 19 МЛН
АЗАРТНИК 4 |СЕЗОН 3 Серия
30:50
Inter Production
Рет қаралды 862 М.
The CUTEST flower girl on YouTube (2019-2024)
00:10
Hungry FAM
Рет қаралды 49 МЛН
My daughter is creative when it comes to eating food #funny #comedy #cute #baby#smart girl
00:17
Всё об указателях в C++ за 20 минут
20:00
Преобразование типов данных в языках С и С++
11:10
Оксана Еськова. Основы программирования
Рет қаралды 540
At the end of the video, deadpool did this #harleyquinn #deadpool3 #wolverin #shorts
00:15
Anastasyia Prichinina. Actress. Cosplayer.
Рет қаралды 19 МЛН