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