кто не знает как быстро комментировать некоторый участок кода, то это делается следующим образом==> выделяете нужный участок кода, жмёте ctrl+k, затем с, чтобы раскомментировать, жмёте ctrl+k и затем u,
Эти уроки просто Золотой капитал ютьюба! Спасибо огромное за ваш труд и отличный подход к обучению! От простого к сложному прям как хотели бы, чтоб вас обучали! 👍🏼👍🏼👍🏼
Спасибо хорошие уроки... когда увидел что их 200 подумал шара, просто накатанные на быструю руку уроки.... а сейчас смотрю они очень круто прстроенны.. спасибо ))
Блин, я как-то посмотрел этот ролик, и такой "о. круто, ладно...". По итогу через некоторое время (сегодня), я убился его искать. Ну нет больше адекватных материалов по срр, ну что поделать. Автор! Огромное спасибо тебе! Выручил! Даже не знаю как выразить свою благодарность, чтобы обозначить как сильно ты мне помог!
Не мог понять формулу sizeof(arr)/sizeof(arr[0])... Поигрался с кодом... Вывел cout-ом sizeof(arr[0]) отдельно и тут я понял что это и вправду гениально... Этот вариант на все случаи нежели чем sizeof(*тип данных*)
Во время экспериментов с кодом заметил, что получить размер массива из функции нельзя. Немного погуглив, узнал, что в функции работа происходит со ссылкой на массив, а не с самим массивом... Поэтому, необходимо передавать размер массива в функцию заранее. P.S Отличные уроки, Всё понятно объясняешь! Спасибо!
Разделяйте запись данных с её выводом, а то бред какой-то, создаешь функцию которая должна просто распечатывать, а он тебе все данные перезаписывает. Таких как вы увольнять в первую очередь
в отладчике abc = 7 и это верно, значит не обязательно во втором sizeof указывать на массив, а только на любое значение из этого массива. int arr[]={1,66,4,332,41412,22,44}; int abc; abc = sizeof(arr) / sizeof(0); for (int i = 0; i < abc; i++) { if (i==3) { continue; } cout
учу синтаксис и особенности плюсов, до этого писал на питоне и понимаю насколько питон проще в синтаксисе в питоне есть специальная встроенная функция len() для того чтобы вернуть количество элементоа в массиве, а здесь...
Ну, тогда уж можно смотреть, не сколько занимает int вообще, а сколько занимает места нулевой элемент массива arr[0], тогда даже если поменять тип переменных в массиве, всё равно всё будет работать.... Вроде правильно?
Спасибо за виде, но хотелось бы уточнить, что функция sizeof вычисляется на этапе компиляции, а не выполнения, и поэтому работает только для типов с фиксированным или изначально определенным размером
Всегда боялся касаться темы памяти. Начинаю приобретать уверенность :))) Кстати, если sizeof(arr) - показывает длину массива, то что показывает sizeof(arr[SIZE]) ??? T.e., если я правильно понимаю, сам массив, к примеру, занимает 20 байт, плюс на саму переменную int arr[] - 4 байта? Т.е. компилятор на массив, на все вместе, выделяет памяти не 20, а 24 байта?
Сергей! Спасибо за урок! Вопрос: будет ли в ваших видео по С++ изучение алгоритмов и структур данных.(Простите, если не корректно задал вопрос, просто пока не понимаю что это за тема, а в ВУЗЕ предмет такой есть))
можно ли иметь много разных кодов где-то во вкладках Visual Studio? (Допустим, я написал код, нажал на какой-нибудь там "add", и у меня уже новая вкладка для работы с новым кодом)
Я попробовал реализовать тоже самое в функции но он почему то говорит тип sizeof (arr)= 4 для инта где в масиве было 5 элементов не подскажите как решить данную проблему
Pavel Chered там работает немножко другой принцип. В качестве длины строки используется функция lenght (); или можно попробовать разделить размер строки на размер типа char
я тут придумал кое-что на случай, если у нас есть несколько циклов для работы с массивами. Мы можем не писать каждый раз sizeof(arr)/sizeof(arr[0]) а просто заключить это значение в константу, например, SIZE и не париться: ........ int main() { int arr[ ]{12, 34, 55, 78}; const int SIZE = sizeof(arr)/sizeof(arr[0]); for (int i = 0; i < SIZE; i++) { cout
sizeof(arr[0]) неравно кол-ву элементов в массиве. Дело в том, что мы задали интовый массив (int), а arr[0] это его интовый нулевой (по счёту первый элемент) элемент, размер которого равен 4 т.к. тип int равен 4 байтам (каждая переменная этого типа равна 4 байтам). И если в массиве, допустим, 5 элементов типа инт, то они в целом будут весить 5*4=20 байт, но если мы знаем размер типа инт и сколько весит весь массив, то можем найти кол-во его элементов с помощью обычного деления (20/4=5), где 20 - объём массива, а 4 - размер занимаемый каждым элементом. Если мы забыли сколько весит какой-то из типов данных, то можем узнать его размер с помощью всё той же функции sizeof() и поделить на то, что она нам вернёт т. е. sizeof(arr[0])/sizeof(int) или sizeof(arr[0])/sizeof(double).
Кто-нибудь объясните мне пж, что это за "size_t" сейчас такое подставляется в цикл for, если его через tab в visual studio создаёшь? Что-то читал, но не очень понял, там что-то про совместимость с системами, но что это конкретно такое?
@@Chernij_Chaj_blacktea не, я уже немного прошарился, это типа какой-то спецефический typedef на unsigned int. В общем size_t работает как unsigned int. Также, Сергей в каком-то из уроков это сам показывал, не помню уже в каком
Насколько корректно делать расчет количества циклов в самом сравнении в цикле For? Нас учили что лучше выделить для этого переменную - тогда расчет делается один раз и программа будет работать быстрее, а не так как у Вас при каждом проходе цикла производится вычисление числа с которым сравнивается переменная "i". Или я не прав и For помнит что i не должна быть больше числа, которое она вычислила самый первый раз и потом его не пересчитывает?
@@Iodusmotrit структура int - 1 бит на знак, 31 бит - мантисса. структура float 1 бит на знак, 8 бит на порядок, 23 бита на мантиссу. Как видим у флоат на мантиссу выделено меньше памяти, а значит значащих цифр в числе хранится меньше. Тоесть если задать в программе, что у нас int и float хранят цифры после запятой у некого числа, то точность у инт будет гораздо выше, потому что 8 бит порядка у флоата не будет задействовано.
Для того чтобы вывелись нули, нужно явно указать длину массива в квадратных скобках. Если бы в видео объявление массива имело такой вид int arr[10] = {5, 33, 545, 111, 326}, то компилятор заполнил бы оставшееся место в массиве нулями, т.е. массив условно имел бы вид {5, 33, 545, 111, 326, 0, 0 ,0 ,0 ,0}. Подробней про это было в предыдущем уроке
подскажите, почему когда мы записали с 12.30 минуты double arr, цикл for также все выводит корректно, если sizeof(arr) при этом должен быть равен 40, а sizeof(arr[0]) = 5, тогда 40/5=8, 8 раз должен был выполниться цикл. почему не так подскажите?
тож ошибка такая была arr i а не 0 должно быть) Но я уже быстрее стал свою тупость исправлять. Хотя прошёл год я уверен ты либо забил, либо знаешь ахахахах
мы делим не на 1 элемент массива, а на то, сколько байтов он занимает в памяти (sizeof). Тк там стоит тип double ==> arr[0] = 8 и все условие 40/8 (==5) - 5 итераций
При использовании double вместо int выделяется не "еще место под дробную часть", а в принципе выделяется 8 байт вместо 4, т. к. представление принципиально разное.
Ребят,лучше сразу запомнить сколько байт весит любой тип данных.Например: Вместо sizeof(arr)/sizeof(int) Лучше писать sizeof(arr)/4 Так код будет меньше.
кто не знает как быстро комментировать некоторый участок кода, то это делается следующим образом==> выделяете нужный участок кода, жмёте ctrl+k, затем с, чтобы раскомментировать, жмёте ctrl+k и затем u,
спасибо)
>причислен к лику святых
жму краба, спасибо
еще можно выделить курсором участок кода и нажать ctrl + shift + /
@@imchainedd да,думаю так более удобно)
Эти уроки просто Золотой капитал ютьюба! Спасибо огромное за ваш труд и отличный подход к обучению! От простого к сложному прям как хотели бы, чтоб вас обучали! 👍🏼👍🏼👍🏼
Спасибо хорошие уроки... когда увидел что их 200 подумал шара, просто накатанные на быструю руку уроки.... а сейчас смотрю они очень круто прстроенны.. спасибо ))
Сергей спасибо. Очень хороший материал без лишнего мусора.
Пожалуйста!
Спасибо за урок!!! гениальные примеры.👍
Блин, я как-то посмотрел этот ролик, и такой "о. круто, ладно...". По итогу через некоторое время (сегодня), я убился его искать. Ну нет больше адекватных материалов по срр, ну что поделать. Автор! Огромное спасибо тебе! Выручил! Даже не знаю как выразить свою благодарность, чтобы обозначить как сильно ты мне помог!
0:36 - Что выполняет функция sizeof?
1:11 - Использование sizeof с переменными
2:05 - Использование sizeof для определения длинны массива
герой
интересная и полезная функция, спасибо за урок)
очень интерестная информация! спасибо за вашу работу!
Не мог понять формулу sizeof(arr)/sizeof(arr[0])... Поигрался с кодом... Вывел cout-ом sizeof(arr[0]) отдельно и тут я понял что это и вправду гениально... Этот вариант на все случаи нежели чем sizeof(*тип данных*)
Во время экспериментов с кодом заметил, что получить размер массива из функции нельзя.
Немного погуглив, узнал, что в функции работа происходит со ссылкой на массив, а не с самим массивом...
Поэтому, необходимо передавать размер массива в функцию заранее.
P.S Отличные уроки, Всё понятно объясняешь! Спасибо!
спасибо вам большое
return :);
спасибо Вам, добрый человек
На примере кода 3:16 можно обойтись одним циклом for, т.е. сократить код:
for (int i = 0; i < SIZE; i++)
{
arr[i] = i;
cout
тоже это интересует. По логике должно работать
@@gfhitdxaahn работает)
@@keklola
Разделяйте запись данных с её выводом, а то бред какой-то, создаешь функцию которая должна просто распечатывать, а он тебе все данные перезаписывает. Таких как вы увольнять в первую очередь
@@allex6829 ну ты сгорел конечно)
разделить sizeof(arr) на sizeof(arr[0]) это просто гениально )
Согласен! Крутая фича
Спасибо за информацию
Спасибо за очередной годный урок)
#sizeof #SimpleCode #урокипрограммирования
Спасибо! Очень ждал)
Пожалуйста =)
#SimpleCode , как заставить компилятор перейти по ссылке ?
Спасибо большое!
Спасибо большое за уроки!
Спасибо, очень доходчиво!
Чувак спасибо тебе за качественное обучение
Я один отвлёкся от сего важного урока, чтобы рассмотреть рабочий стол Сергея на 8:19?
я знал что не один такой))
Я отвлекся и зашел посмотреть в коментарии чтобы найти твой....)))
Нашел "Казаки 3"?)))
Alien Swarm Reactive Drop ;)
iDrazd * 8:21
Массив ещё можно перебрать подобным способом, в разы проще данным способ, а не изобретать велосипед:
for (int item : items) {
std::cout
в принципе если хорошо выучить циклы , то с массивами не будет сложно . Да и массивы удобная вещь довольно )
привет из 2023. Спасибо большое!
Спасибо за урок!
Идёт пересдача,вот и я который учил все решил пересмотреть
в отладчике abc = 7 и это верно, значит не обязательно во втором sizeof указывать на массив, а только на любое значение из этого массива.
int arr[]={1,66,4,332,41412,22,44};
int abc;
abc = sizeof(arr) / sizeof(0);
for (int i = 0; i < abc; i++)
{
if (i==3)
{
continue;
}
cout
Наверное abc = sizeof(arr) / sizeof(arr[0]);
Т.к. уроки относительно короткие, то еще будет много уроков по основным(базовым) понятиям? После базы, будет что-то посерьезней ?
* Самые понятные, видео уроки по c++, на всём (RU) youtube *
sizeof(arr) / sizeof(arr[0]) - это просто гениально ....
Спасибо тебе, помогло очень.
Полезная видюшка!
То, что нужно!
Удачи в развитии канала)))
Отличное пособе
Даже я, пацан, 12 лет понял все, без сложностей и без недопониманий, удачи))))
Так пока ничего сложного и не было
всё понятно, все в убежище! Штурмуем 29 урок ! :)
Топ видео!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!11
Тебе памятник поставить нужно за твои видео!
учу синтаксис и особенности плюсов, до этого писал на питоне и понимаю насколько питон проще в синтаксисе
в питоне есть специальная встроенная функция len() для того чтобы вернуть количество элементоа в массиве, а здесь...
спасибо
Лучшее объяснение
Сайзоф Акмалович Муртазаев
Полезный гайд
офигеть
закончил и этот урок делал большой перерыв
Пускаю слезу по len() и range() в Python
Жиза. Сам учу c++ после Питона. Странные ощущения... Кажется приходит понимание как все это работает. Когда писал на Питоне, такого не было
@@gfhitdxaahn ощущения питона после С++: полная анархия...
std::size() и std::views::iota() Вам в помощь...
size(array) эквивалентно sizeof(array)/sizeof(array[0])
крута спасибо )
чет, как то не работает
@@Nyamchik-0_0 по моему эта функция появилась в с++ 17
Прикольные обои
Хотелось бы узнать как сделан оператор sizeof
я как то раз думал, что делать если хочу вывести числа из массива. оказывается так просто)
Прикольно!
Ну, тогда уж можно смотреть, не сколько занимает int вообще, а сколько занимает места нулевой элемент массива arr[0], тогда даже если поменять тип переменных в массиве, всё равно всё будет работать.... Вроде правильно?
Это действительно работает и это действительно очень хорошее решение) Проблема только в том, что об этом было сказано в видео))
Спасибо за виде, но хотелось бы уточнить, что функция sizeof вычисляется на этапе компиляции, а не выполнения, и поэтому работает только для типов с фиксированным или изначально определенным размером
👍
А если размер элемента меньше, чем смещение между элементами, то всё сломается?
Такое может быть при выравнивании по некоторым границам памяти.
хорошая функция
Всегда боялся касаться темы памяти. Начинаю приобретать уверенность :)))
Кстати, если sizeof(arr) - показывает длину массива, то что показывает
sizeof(arr[SIZE]) ???
T.e., если я правильно понимаю, сам массив, к примеру, занимает 20 байт, плюс на саму переменную int arr[] - 4 байта?
Т.е. компилятор на массив, на все вместе, выделяет памяти не 20, а 24 байта?
Спсб
Сергей! Спасибо за урок! Вопрос: будет ли в ваших видео по С++ изучение алгоритмов и структур данных.(Простите, если не корректно задал вопрос, просто пока не понимаю что это за тема, а в ВУЗЕ предмет такой есть))
за eve online респект, надеюсь еще не забросил?)
Классные уроки. А ты откуда? У тебя акцент интересный.
можно ли иметь много разных кодов где-то во вкладках Visual Studio? (Допустим, я написал код, нажал на какой-нибудь там "add", и у меня уже новая вкладка для работы с новым кодом)
Можно
@@syimykzhaparov1900 как?
@@onadebt создать новый проект
@@onadebt новый cpp добавить в обозревателе решений, видишь, я вовремя
Я попробовал реализовать тоже самое в функции но он почему то говорит тип sizeof (arr)= 4 для инта где в масиве было 5 элементов не подскажите как решить данную проблему
А будет ли этот метод работать со строками класса string? Или там метод ".size()" ?
Очень странно, что в книгах про это не видел нигде.
Pavel Chered там работает немножко другой принцип. В качестве длины строки используется функция lenght (); или можно попробовать разделить размер строки на размер типа char
KristyZet а теперь вопрос. Зачем делить на 1?
MadMax не у всех компиляторов размер типа char имеет 1 байт за умолчанием, у некоторых можна встретить и размер в 2 байта.
я тут придумал кое-что на случай, если у нас есть несколько циклов для работы с массивами. Мы можем не писать каждый раз sizeof(arr)/sizeof(arr[0])
а просто заключить это значение в константу, например, SIZE и не париться:
........
int main()
{
int arr[ ]{12, 34, 55, 78};
const int SIZE = sizeof(arr)/sizeof(arr[0]);
for (int i = 0; i < SIZE; i++)
{
cout
размер массива думаю может измениться, а переменная останется та же.
а есть что то для динамического массива? как рассчитать в нем количество элементов?
Тю,а почему sizeof(arr[0]) равно кол-ву элементов в массиве?Не понял этого.Объясни,пожалуйста
sizeof(arr[0]) неравно кол-ву элементов в массиве.
Дело в том, что мы задали интовый массив (int), а arr[0] это его интовый нулевой (по счёту первый элемент) элемент, размер которого равен 4 т.к. тип int равен 4 байтам (каждая переменная этого типа равна 4 байтам).
И если в массиве, допустим, 5 элементов типа инт, то они в целом будут весить 5*4=20 байт, но если мы знаем размер типа инт и сколько весит весь массив, то можем найти кол-во его элементов с помощью обычного деления (20/4=5), где 20 - объём массива, а 4 - размер занимаемый каждым элементом.
Если мы забыли сколько весит какой-то из типов данных, то можем узнать его размер с помощью всё той же функции sizeof() и поделить на то, что она нам вернёт т. е. sizeof(arr[0])/sizeof(int) или sizeof(arr[0])/sizeof(double).
если увеличивается число данных в массиве то такая сложная запись позволяет нивелировать эти изменения
Нам лень указать переменную поэтому напишем несколько строк кода!
for (int i = 0; i < size(arr); i++) чет не знаю в таком ключе меня более чем такая запись устраивает
Можно упростить себе жизнь и писать size(массив)
Получится длина массива
sizeof(sizeof(sizeof(sizeof)))
А что делать если мы передаем массив в функцию и в ней же нам надо определить размер массива. Така запись не сработет.
Как понял, лучше в массивах не использовать sizeof () :)
Лучше объявить const переменная, так покароче
Когда будешь работать с динамическими массивами, тебе это не поможет.
А лучше использовать size() :)
Скажите пожалуйста очень надо. Какой тип переменной будет использоваться а='abcdefg';
SPEEDMAKE , char
можно подключить библиотеку string и использовать тип переменной string
string
Если char то нужно использовать C-строку пример ( char[10])
Почему при написании cout
#include
using namespace std;
void main()
{
setlocale(LC_ALL, "RU");
int arr[]{5,33,545,111};
for (int i = 0; i < 4; i++);
{
cout
лишняя точка с запятой после for
как закоментировать строку кода быстро как ты в видео?
Ctrl + K + C
2:25 не забув. У попередніх уроках казав.
#SimpleCodeПРОСТОиПОНЯТНО
Кто-нибудь объясните мне пж, что это за "size_t" сейчас такое подставляется в цикл for, если его через tab в visual studio создаёшь? Что-то читал, но не очень понял, там что-то про совместимость с системами, но что это конкретно такое?
это просто пример текста, который тебе нужно заменить на тип данных: int, char и.т.п (как я понимаю)
@@Chernij_Chaj_blacktea не, я уже немного прошарился, это типа какой-то спецефический typedef на unsigned int. В общем size_t работает как unsigned int. Также, Сергей в каком-то из уроков это сам показывал, не помню уже в каком
Фалаут, ив лаунчер ого)))
непонятно - откуда метод size_of берет этот размер?
Если просто, то есть еще некий кусок кода который не видно в нем есть функция sizeof со всеми вычислениями, тут мы просто ее вызываем.
sizeof(arr) / sizeof(*arr) вроде так можно тоже
Что делает *? Можешь объяснить?
Насколько корректно делать расчет количества циклов в самом сравнении в цикле For? Нас учили что лучше выделить для этого переменную - тогда расчет делается один раз и программа будет работать быстрее, а не так как у Вас при каждом проходе цикла производится вычисление числа с которым сравнивается переменная "i". Или я не прав и For помнит что i не должна быть больше числа, которое она вычислила самый первый раз и потом его не пересчитывает?
Скорее всего Вы правы. Операция сайзоф/сайзов будет производиться каждую итерацию
Если и int и float весят 4 байта, почему нам и так всегда не использовать float?
Хз, возможно у int'а диапазон значений больше, но я не уверен. Надо на форумах прочекать
@@АртурГрабалин-ю6хНапиши когда узнаешь, хорошо?
@@Iodusmotrit структура int - 1 бит на знак, 31 бит - мантисса. структура float 1 бит на знак, 8 бит на порядок, 23 бита на мантиссу.
Как видим у флоат на мантиссу выделено меньше памяти, а значит значащих цифр в числе хранится меньше. Тоесть если задать в программе, что у нас int и float хранят цифры после запятой у некого числа, то точность у инт будет гораздо выше, потому что 8 бит порядка у флоата не будет задействовано.
@@Сергей-т9д7в Спаибо бро❤
Почему вывелся мусор, а не нули? 6:15
Для того чтобы вывелись нули, нужно явно указать длину массива в квадратных скобках. Если бы в видео объявление массива имело такой вид int arr[10] = {5, 33, 545, 111, 326}, то компилятор заполнил бы оставшееся место в массиве нулями, т.е. массив условно имел бы вид {5, 33, 545, 111, 326, 0, 0 ,0 ,0 ,0}. Подробней про это было в предыдущем уроке
int array[]{45,32,73,86,46,56,37};
const int SIZE = sizeof(array) / sizeof(int);
cout
У меня не работает SetCursorPos и BlockInput . Пишет - элементы не найдены. Помогите!!!!
подскажите, почему когда мы записали с 12.30 минуты double arr, цикл for также все выводит корректно, если sizeof(arr) при этом должен быть равен 40, а sizeof(arr[0]) = 5, тогда 40/5=8, 8 раз должен был выполниться цикл. почему не так подскажите?
Вдруг кого еще мучает этот вопрос то тут ошибка не 40/5(?)=8 .........а 40/8(double)=5
тож ошибка такая была
arr i а не 0 должно быть)
Но я уже быстрее стал свою тупость исправлять.
Хотя прошёл год я уверен ты либо забил, либо знаешь ахахахах
мы делим не на 1 элемент массива, а на то, сколько байтов он занимает в памяти (sizeof). Тк там стоит тип double ==> arr[0] = 8 и все условие 40/8 (==5) - 5 итераций
Я так понимаю эта функция нужна будет для работы с БД?
зачем? можно просто a.size() - сколько элементов массиве а, но урок всё равно топ, много полезного)
потому что это массив, а не вектор> в массиве ты сможешь обратится к размеру через size(a)
При использовании double вместо int выделяется не "еще место под дробную часть", а в принципе выделяется 8 байт вместо 4, т. к. представление принципиально разное.
а можно ж capacity использовать
9:35 кто-то поржал на фоне
Уважаемые госпада просматривающие, подскажите как в 2 клика комментировать часть кода
не знаю, нужен ли вам ответ, но комментируется как ctrl + shift + /
ес че видео было до С++ 17, щас есть std::size, делает все выше перечисленное, но в разы точнее
6:28
Ребят,лучше сразу запомнить сколько байт весит любой тип данных.Например:
Вместо sizeof(arr)/sizeof(int)
Лучше писать sizeof(arr)/4
Так код будет меньше.
Чел...