Программирование на C. Урок 9. Массивы. Часть 1

  Рет қаралды 11,543

narod stream

narod stream

Күн бұрын

Пікірлер: 33
@mirazakrevskaya4290
@mirazakrevskaya4290 Жыл бұрын
Отличные уроки, спасибо)
@ДанилаДанила-э8с
@ДанилаДанила-э8с 3 жыл бұрын
последний коммент 2 года назад.. дядь, твои уроки смотрят и сейчас! спасибо за отличное преподавание.
@never.m1nd
@never.m1nd 5 жыл бұрын
Пожалуй добавлю в избранное)
@motoday3580
@motoday3580 5 жыл бұрын
Спасибо большое !
@ДмитрийПисарь
@ДмитрийПисарь 5 жыл бұрын
Я ещё на атмел студио до конца не разобрался. Однозначно 👍
@dmitriyfilatov8658
@dmitriyfilatov8658 5 жыл бұрын
Давайте, все же придерживаться верной терминологии: не "равно", а "присвоить". Тем более, что курс с азов начат.
@awenn2015
@awenn2015 2 жыл бұрын
let a = [14, 16, 11, 8, 19, 13]; a.push(12); a.filter((i) => i >= 15); Результат: a.foreach((i) => console.log(i)); a.join(" - ");
@awenn2015
@awenn2015 2 жыл бұрын
Интересно как узнать размер массива, в js можно с помощью length, а php с помощью count
@Красный-ц9ч
@Красный-ц9ч 5 жыл бұрын
Вот и до массивов дошли!
@Иринаколпакова-з2ж
@Иринаколпакова-з2ж 4 жыл бұрын
для чего цыккл for перед выводом символьного массива
@АлександрЛеденев-ц5т
@АлександрЛеденев-ц5т 5 жыл бұрын
Когда вы инициализируете массив, вы не резервируете память мгновенно - это произойдет на момент использования этого массива. Я по дурости понасоздавал огромных массивов - смотрю на память, а там все отлично (потому и создавал дальше кучу массивов). А вот когда я начал применять эти массивы в различных операциях, тогда и осознал весь ужас нехватки памяти в моем МК. Просто объявить переменную, скомпилировать и посмотреть сколько памяти осталось, недостаточно. Подсказка новичкам от новичка.
@Onlinespirits
@Onlinespirits 5 жыл бұрын
Можно по подробнее? Можно даже кодом :) Я новичек в программировании микроконтроллеров, не сильно понял эту хитрость. Я всегда думал что при объявлении переменной, выделяется память согласно её типу.
@АлександрЛеденев-ц5т
@АлександрЛеденев-ц5т 5 жыл бұрын
@@Onlinespirits Если вы объявите массив с каким нибудь большим объемом данных, а потом скомпилируете, то счетчик остатка оперативной памяти в МК не особо изменится. Вам покажется, что наверно массив не очень много места кушает. А теперь, допустим, вы в этот код добавляете цикл, в котором проходите по элементам этого массива (короче, что-то с этим массивом делаете), и вот теперь после компиляции количество оставшейся памяти у вас резко упадет. Потом мне на форуме написали, что компилятор резервирует память когда ему удобно, а формальности с объявлением переменной служит только для нашего удобства (чтобы мы могли объявить в начале кода, а не где-то в середине). Так вот, когда мы объявляем массив но его не используем, компилятор видит что мы его, собственно, не используем и не резервирует память.
@narodstream552
@narodstream552 5 жыл бұрын
Так поэтому мы и пошли в отладку, чтобы точно удостовериться, что и как. Причём смотрел в разных компиляторах, в VS тоже смотрел, там так же.
@Electronika_
@Electronika_ 5 жыл бұрын
Все довольно просто, компилятор неиспользуемую часть кода не компилирует. Все ровно так же как и при использовании библиотек. Вы подключаете (include) библиотеку, в ней уйма функций но в своей программе Вы обращаетесь только к одной, несмотря на громадную библиотеку, скомпилируется только нужная ее часть.
@dmitriykonopinskiy3793
@dmitriykonopinskiy3793 4 жыл бұрын
"Когда вы инициализируете массив, вы не резервируете память мгновенно" вот именно, что резервируете, если речь идёт именно про инициализацию, а не про объявление. Правилом хорошего тона является зануление переменных и массивов при их объявлении. В уроке показаны 2 примера инициализации массива нулями а[10]={0}; а[10]={};
@maximpetrov2742
@maximpetrov2742 5 жыл бұрын
Ещё раз хочу спасибо за ваши труды ) скоро будут указатели ? И такие темы как heap , stack и прочее в теме мк ?
@narodstream552
@narodstream552 5 жыл бұрын
Спасибо! Указатели ещё не скоро, а куча и стек тем более. Мы ещё операции не все знаем. Функции будут, разбивка на модули, make, указатели по плану пока стоят далеко, но может всё меняться.
@kalobyte
@kalobyte 5 жыл бұрын
тоже жду всякие указатели на указатели, указатели на функции, переключение функций по указателю (например эффекты светодиодов вс2812 в виде функций и чтобы их можно было выбрать из списка и сохранить выбор в нужной последовательности в епром
@sentyay
@sentyay 5 жыл бұрын
На днях пол дня убил, разбираясь почему программа не вызывала функцию при получении определенных элементов массива. Оказалось, что я затупил с обращением к элементу массива в условии функции) А затуп весь был в том, что нумерация элементов начинается с 0.
@narodstream552
@narodstream552 5 жыл бұрын
Есть такое. Самое главное, что теперь поняли.
@awenn2015
@awenn2015 2 жыл бұрын
Так то да это ж азы
@ВячеславСартисон
@ВячеславСартисон 5 жыл бұрын
Пробовал выгребать из массива значения больше чем в нем содержаться например char a[ ] = "Privet"; printf ( " %c ",a[200]); Выводит символы в этом примере букву "с" (код 99). Откуда они берутся?
@narodstream552
@narodstream552 5 жыл бұрын
Так делать не надо, либо посмотрите, как распределились секции кода и данных. Возможно Вы попадаете в секцию кода. Или хотя бы выделите памяти под 201 элемент, Вы же к 201-му обращаетесь, у нас отсчёт с нуля.
@Electronika_
@Electronika_ 5 жыл бұрын
Элементы массива находятся в памяти строго друг за другом и до него и после присутствует тоже код (данные, инструкции...), а компилятор не проверяет индекс массива, при обращении к нему, на предмет выхода за диапазон самого массива. По этому по факту 200-й элемент находится в 201-й "ячейке" памяти относительно указателя нулевого элемента массива, а что там по факту известно только компилятору. По этому Ваша буква "с", всего лишь вырванный кусок кода из памяти, переведенный в символ ASCII.
@ДимаДима-к1н
@ДимаДима-к1н 4 жыл бұрын
int A[]=A[i]=++i почти тоже будет работать ,Perpetuum Mobile. Eсли интерпритатор старый_пропустит , Компилятор ЗАСТРЕЛИТ комп ещё на стадии написания программы... Повторение мать у....как это давно было... Кто может может расшифровать результат, интересно увидеть ,ваши варианты ЧТО могло пойти не так?
@awenn2015
@awenn2015 2 жыл бұрын
Я надеюсь указывать размер массива при инициализации это не обязательное условие ?)) А то не очень прикольно получаеться
@СуНаиль
@СуНаиль 5 жыл бұрын
Это все есть в учебниках по программированию. Нужно рассмотреть необычные примеры работы с массивами.
@narodstream552
@narodstream552 5 жыл бұрын
А мы здесь, как ни странно, тоже учимся. Хотите необычных, смотрите уроки по STM32, там много необычного, в т.ч. и массивов. Здесь важно построить занятие так, чтобы было понятно всем, в том числе тем, кто впервые решил заняться программированием. А весь трэш там.
@sentyay
@sentyay 5 жыл бұрын
В учебниках это совсем не то. Когда живой человек объясняет доступными словами, то быстрее доходит. Данного материала для 80% аудитории достаточно для повседневных задач. Спасибо огромное за уделённое время и разъяснение основ работы!
@СуНаиль
@СуНаиль 5 жыл бұрын
@@narodstream552 я имею ввиду, что помимо этого нужно и другое, чтобы уроки не скатились в банальное повторение множества уроков, которые есть в ютьюбе. СПасибо за уроки.
@narodstream552
@narodstream552 5 жыл бұрын
Да я и не повторяю, это так получается, я и книжек-то особо не читал. В основном больше практически обучался и на открытых исходных кодах. И Вам тоже спасибо за такой интерес к программированию!
@remontlive
@remontlive 2 жыл бұрын
спасибо огромное!
The evil clown plays a prank on the angel
00:39
超人夫妇
Рет қаралды 53 МЛН
Гениальное изобретение из обычного стаканчика!
00:31
Лютая физика | Олимпиадная физика
Рет қаралды 4,8 МЛН
黑天使被操控了#short #angel #clown
00:40
Super Beauty team
Рет қаралды 61 МЛН
Создание и заполение массива на Си
12:35
Тимофей Хирьянов
Рет қаралды 85 М.
Функции в языке Си
27:17
Тимофей Хирьянов
Рет қаралды 46 М.