Познавательно! Последняя фраза очень поразила меня и заставила задуматься, вот я, иногда, вместо 3 пишу 0b11, на деле это бессмысленно, ведь код становится нечитабельным и тут я показываю не свои познания в области информатики, а свою небрежность к коду, в итоге программа скомпилирует, почти одинаковый код. Кстати, спасибо за превосходный видеоурок!
@АнДа-х5ъ10 ай бұрын
Учитель от Бога!
@anvarx1 Жыл бұрын
Великолепный урок !!! Спасибо никогда не различал между указателем на массив и его указателем копией.
@andredru427811 ай бұрын
Спасибо. Я немного шокирован ) Мощь!
@SMV19729 ай бұрын
Огромное Спасибо! Я вообще ноль, и то все понятно. Очень хорошо объясняете
@alexdubkov6998 Жыл бұрын
Отлично! Поскольку берется данные из ячейки, адрес которой есть просто сумма начального адреса (пусть, ptr_ar=106) и смещения (в данном случае=2), то получается, что мы берем данные из ячейки 106+2=108. И неважно, как мы это вычислили: 106+2 или 2+106. Спасибо Вам за ваши уроки!
@diisspersion2 ай бұрын
sizeof(ptr_arg) - возвращает размер переменной ptr_arg, которая является указателем. На 64-битной системе любой указатель (независимо от того, на что он указывает) имеет размер 8 байт. Поэтому len2 должно по идеи быть равно 8.
@АлександрЧерданцев-у7н19 күн бұрын
Моё почтение, сударь! Откуда у вас такие "глубокие" знания о размере указателя на 64-битных системах? Я новичок в программирование, но из предыдущих видео уважаемого автора этого канала понял, что размер указателя определяется при его объявлении типом данных, с которыми он будет работать, т.е. на которые он будет указывать. Поэтому я думал, что len2 должен был быть 2, т.к. short *ptr_ar; Следовательно, либо на 64-битной системе тип short занимает в оперативной памяти 4 байта, либо тут что-то наделал тип size_t при объявлении переменной len2? Странно, что сам автор на это никак не обратил внимание и не пояснил данный момент.
@jamjam3337 Жыл бұрын
спасибо!👏👍💪
@Вайс-я8з3 ай бұрын
Я не встретил в видео упоминания (поправьте меня, если это не так) о том, что для всех указателей адрес увеличивается или уменьшается на величину, равную размеру объекта того типа, на который они указывают. Просто изначально я не понял, что за условная единица (или несколько оных) добавляется к указателю на массив ar (т.е. что она из себя представляет, 1 байт или 2, или больше?). Оставлю комментарий для таких же как я.
@selfedu_rus3 ай бұрын
об этом дальше в адресной арифметике
@АлександрЧерданцев-у7н19 күн бұрын
@@selfedu_rus может раньше? Адрес Арифметика, вроде, уже как была? Но из неё я почему-то не понял, что размер самой ячейки памяти (или регистра), в которой хранится сам указатель всегда одинаковый и зависит от разрядности ОС, под которую пишется программа. Поправьте меня, если я не прав.
@donfedor007 Жыл бұрын
Спасибо вам! ar[idx] получается это своего рода синтаксический сахар)
@selfedu_rus Жыл бұрын
да
@planetskaro3782 Жыл бұрын
Сергей, здравствуйте. Почему len_2 равна 4? Шорт ведь двухбайтовые, для len_1 сходится 2*7=14, а вот со второй?
@selfedu_rus Жыл бұрын
short *ptr_ar; определяет указатель, который работает с данными типа short; здесь тип short относится не к указателю, размер указателей всегда соответствуют разрядности программы. Если она 32-х разрядная, то указатели занимают 4 байта. Именно это и отражено в ролике.
@powerri19927 ай бұрын
Здравствуйте, можете пожалуйста, более подробно рассказать почему len_2 равна 4, я видел комментарий с таким же вопросом но там не очень понял ответ, так как знаю что Шорт размером в 2байта а значит и указатель на Шорт тоже 2 байта, спасибо!
@powerri19927 ай бұрын
Или это именно размер вместимости самого места куда помещается адрес?
@СамуилИгоревич4 ай бұрын
@@powerri1992Да, 4 байта в данном случае(32 битная архитектура) - размер области памяти, которая отводится под указатель. На 64 битной - соответственно 8 байт отводится под хранение адреса. Попробуй написать printf("%zu", sizeof(short*)); printf("%zu", sizeof(short)); и сравни. Для удобства можно считать типами short*, double*, void* и т. д. Размер выделенной под указатель памяти не зависит от того, на какой тип он ссылается, а только от разрядности компилятора и ОС.
@СамуилИгоревич4 ай бұрын
По поводу того, можно ли считать short* типом, есть мнение, что нельзя, так как short* a, b; a - указатель, b - обычная переменная(а мы предлагаем, что указатель). Для этого лучше объявлять указатели и обычные переменные на разных строчках, чтобы избежать путаницы.
@powerri19924 ай бұрын
@@СамуилИгоревич спасибо
@powerri19924 ай бұрын
@@СамуилИгоревич спасибо
@РусланКарнеенко10 ай бұрын
Спасибо
@smolewood Жыл бұрын
Скажите, а почему конструкт short x = *prt_ar; не срабатывает как только добавляешь индексы в квадратных скобках, например при таком операторе short x = *prt_ar[2]; - компилятор уже выдает ошибку, как только добавляешь индексы в квадратных скобках звездочка уже на нужна?
@mishka5284 Жыл бұрын
Потому что ptr_ar[2] эквивалент записи *(ptr_arr+2) и мы не может ещё раз записать звёздочку, так как это уже тип int
@НиколайШуман-ч9ю Жыл бұрын
Ребята, подскажите пожалуйста ! Как получить доступ к скрытому контенту )
@igorseledtsov73454 ай бұрын
укзатели это просто указатели , а не указатели на массивы