Язык Си для начинающих / #3 - Массивы данных

  Рет қаралды 187,288

Гоша Дударь

Гоша Дударь

4 жыл бұрын

Массивы данных позволяют хранить большой объем информации в одном месте. В языке Си они представляют возможности для работы со строками. За урок мы научимся работать с массивами и познакомимся с созданием строк.
1) Урок на сайте itProger: itproger.com/course/c-program...
✔ Сообщество программистов: itproger.com/
✔ -------------
Вступай в группу Вк - prog_life 🚀
Группа FaceBook - goo.gl/XW0aaP
Инстаграм itProger: / itproger_official
Instagram: / gosha_dudar
Telegram: t.me/itProger_official
Twitter - / goshadudar
- Уроки от #GoshaDudar 👨🏼‍💻
- Все уроки по хештегу #goshaLessons

Пікірлер: 135
@mihail8159
@mihail8159 3 ай бұрын
Начал учить язык си , спасибо за уроки !! Очень нравиться заниматься с тобой ..
@user-lo2ue9zp7k
@user-lo2ue9zp7k 3 жыл бұрын
Спосибо за детальное обаснение Просьба , продолжить такие уроки про массивы.
@boristsaikin1
@boristsaikin1 3 жыл бұрын
Молодец. Спасибо!
@tonkua
@tonkua 4 жыл бұрын
очень круто. Доступно и понятно. Спасибо огромное за труды
@xeither289
@xeither289 Жыл бұрын
GOD JESUS TOLD US TO LOVE GOD AND TO LOVE ONE ANOTHER! LET'S NOT DESTROY THIS WORLD! NO WAR!!! БОГ СОЗДАЛ ТАКОЙ ПРЕКРАСНЫЙ МИР! НЕ БУДЕМ РАЗРУШАТЬ МИР! ПОЛЮБИМ БОГА И ВСЕХ ЛЮДЕЙ! НЕТ ВОЙНЕ!!
@user-rl3rc6qq6y
@user-rl3rc6qq6y 2 жыл бұрын
Спасибо!
@user-cy3eu1nq8p
@user-cy3eu1nq8p 3 жыл бұрын
Коли Ви створюєте рядок за допомогою фігурних дужок треба в кінці додавати елемент масиву символ кінця рядка '\0'. Ось так: char slovo[] = {'S', 'l', 'o', 'v', 'o', '\0'}; 🙂
@dmitriyshaykovskiy221
@dmitriyshaykovskiy221 4 жыл бұрын
Спасибо за видео! Все очень круто объясняешь!
@xeither289
@xeither289 Жыл бұрын
GOD JESUS TOLD US TO LOVE GOD AND TO LOVE ONE ANOTHER! LET'S NOT DESTROY THIS WORLD! NO WAR!!! БОГ СОЗДАЛ ТАКОЙ ПРЕКРАСНЫЙ МИР! НЕ БУДЕМ РАЗРУШАТЬ МИР! ПОЛЮБИМ БОГА И ВСЕХ ЛЮДЕЙ! НЕТ ВОЙНЕ!!
@forest9106
@forest9106 Жыл бұрын
Спасибо
@programer8
@programer8 3 жыл бұрын
char word[ ] = {'s', 'o', 'm', 'e'}; char words[ ] = "Hello World"; не одно и тоже. В первом случае это одном. массив символов, во втором случае это строка. Разница между ними состоит в том что строка в памяти заканчивается нулевым байтом, когда как массив символов - нет. Чтобы из массива символов создать строку нужно в конце добавить '\0';
@user-jg3dn6lf2k
@user-jg3dn6lf2k 3 жыл бұрын
нулевым битом, не?
@vip51000
@vip51000 3 жыл бұрын
@@user-jg3dn6lf2k байтом
@leogscdlr2894
@leogscdlr2894 2 жыл бұрын
Добавлю и поясню. Строку в кавычках компиляторы си автоматически помещают в char* и добавляют последним - нуль байт hex 0x00, (char)'\0', (int)00 - asc-II. Зачем оно надо? Это очень удобно. Половина функций по работе со строками работают, опираясь на то, что программист не забывает правильно создавать строки на си, добавляя этот нуль байт. Этот тригер позволяет писать алгоритм, например, цикл, который будет проходить по всей строке, пока байт строки не равен нулю. Это выглядит, как-то так: // strlen - возвращает длину строки в байтах/однобайтовых // символах, не включая 0x00, значением до unsigned long long int size_t strlen(char* str) { size_t res = 0; while (*(str+res)) {++res;} return res; } Без нуль байта подобные функции из string.h будут выдавать вам всякие сегментэйшн фаулты, краши или просто будут работать неправильно.
@userunknown545
@userunknown545 Жыл бұрын
надо зигануть? ну ладно) \0
@xeither289
@xeither289 Жыл бұрын
GOD JESUS TOLD US TO LOVE GOD AND TO LOVE ONE ANOTHER! LET'S NOT DESTROY THIS WORLD! NO WAR!!! БОГ СОЗДАЛ ТАКОЙ ПРЕКРАСНЫЙ МИР! НЕ БУДЕМ РАЗРУШАТЬ МИР! ПОЛЮБИМ БОГА И ВСЕХ ЛЮДЕЙ! НЕТ ВОЙНЕ!!
@supercolder5994
@supercolder5994 Жыл бұрын
Начинал с C# , сейчас изучаю C , необходимо по работе и удивляюсь сколько же плюшек вложили в язык наследник и насколько же он более высокоуровневый по сравнению с C, писать на C# это как водить машину, а перейти на C как будто залезть под капот этой самой машины, очень многие моменты стали очевидны и откуда они все таки взялись
@luckyman9325
@luckyman9325 Жыл бұрын
Хорошая лекция. Хотелось бы посмотреть на инициализацию и работу с массивом строк, именно строк.
@xeither289
@xeither289 Жыл бұрын
GOD JESUS TOLD US TO LOVE GOD AND TO LOVE ONE ANOTHER! LET'S NOT DESTROY THIS WORLD! NO WAR!!! БОГ СОЗДАЛ ТАКОЙ ПРЕКРАСНЫЙ МИР! НЕ БУДЕМ РАЗРУШАТЬ МИР! ПОЛЮБИМ БОГА И ВСЕХ ЛЮДЕЙ! НЕТ ВОЙНЕ!!
@your_china
@your_china 7 ай бұрын
@@xeither289 Тебе нужно создать двумерный массив для этого
@mathew9794
@mathew9794 2 жыл бұрын
спасибо
@a.v.ivanov4030
@a.v.ivanov4030 2 жыл бұрын
Качество твоих видеолекций просто потрясает, я смотрел в ванне эти уроки, я ощутил глобальность этого языка, его многогранность, содержательность, я проникся даже расцветкой команд, содержанием каждой команды. Я испытал эстетическое наслаждение от языка программирования C. Настолько он математичный, симметричный, последовательный, логичный. Твои видеоуроки - это замечательно для того, чтобы начать. Здесь основы. Здесь базис.
@xeither289
@xeither289 Жыл бұрын
GOD JESUS TOLD US TO LOVE GOD AND TO LOVE ONE ANOTHER! LET'S NOT DESTROY THIS WORLD! NO WAR!!! БОГ СОЗДАЛ ТАКОЙ ПРЕКРАСНЫЙ МИР! НЕ БУДЕМ РАЗРУШАТЬ МИР! ПОЛЮБИМ БОГА И ВСЕХ ЛЮДЕЙ! НЕТ ВОЙНЕ!!
@your_china
@your_china 7 ай бұрын
Расцветка не имеет отношения к языку)
@kst5161
@kst5161 5 ай бұрын
Не могу не отметить шикарность этого комментария)
@rixon8136
@rixon8136 2 ай бұрын
12:53 мне не понравилось как ты объяснил про дву мерные массивы, спросил у ии, он ответил так: Это массив у которого каждый элемент так же является массивом. Это гениально и просто но лайк поставлю, ты же старался
@user-vr2fb4kd2h
@user-vr2fb4kd2h 2 жыл бұрын
Уроки суперские как для новичка. Да, некоторые особенности языка не обговорены. Для этого есть канал Хирьянова, где все изучно более подробно
@Lorem-ry7zo
@Lorem-ry7zo 2 жыл бұрын
можно ссылочку?
@iminputlag
@iminputlag 2 жыл бұрын
Чётко, скоро стану погромистом, жди меня диджитал Про рандомно сгенерированные данные я сам как нибудь выучу.
@user-mq3xl6uz4g
@user-mq3xl6uz4g 3 жыл бұрын
Дякую
@champchamp7951
@champchamp7951 3 жыл бұрын
Спасибо, помог!
@user-cy3eu1nq8p
@user-cy3eu1nq8p 3 жыл бұрын
Шановний Гоша, масиви в C та C++ заповнюються автоматично нулями тільки в тому випадку, якщо масив оголошений як глобальний, тобто за межами функції main. 🙂
@big_goku
@big_goku 4 жыл бұрын
Гоша, можешь запилить видео , как сделать динамический строковый массив?
@refeilodev4117
@refeilodev4117 4 жыл бұрын
Вот такой вариант на Си, написал на ходу: typedef struct string { char *data; size_t size; size_t cap} str_t; str_t new_string(size_t size) { str_t str; str.size = size; str.data = (char*)malloc(size * sizeof(char)); str.cap = size + size / 2; return str;}
@refeilodev4117
@refeilodev4117 4 жыл бұрын
Но вообще мутить такие структуры на Си это одни костыли и геморой. В С++ благодаря ооп и перегрузке операторов можно реализовать гораздо удобное решение
@user-cl5qn2qb7w
@user-cl5qn2qb7w 3 ай бұрын
Почему не показали запись текста в массив путём get_int и потом вывод этих цифр по одной в каждой строке?
@user-vb2vx3ds2j
@user-vb2vx3ds2j 3 жыл бұрын
Слишком поверхностно. Не объяснил, как переставить местами элементы массива, как сделать замену элемента массива, как узнать индекс элемента массива и пр.
@user-wu7qg2dt4k
@user-wu7qg2dt4k 2 жыл бұрын
Он в начале курса сказал чтобы глубже выучить или на сайте смотри или сам читай
@leogscdlr2894
@leogscdlr2894 2 жыл бұрын
Это у Хирьянова есть подробно
@alexflanker25
@alexflanker25 2 жыл бұрын
initialize - инициализировать. инициировать - дать старт к.-л. процессу. Например, я инициирую обучение русскому языку=))
@snXneks
@snXneks 2 жыл бұрын
ахапхпхаха
@user-zx2pc2eq8u
@user-zx2pc2eq8u 3 жыл бұрын
можно спросить а какой шрифт используется в IDE?
@user-in6bh9nd8k
@user-in6bh9nd8k Жыл бұрын
SF Mono medium
@leogscdlr2894
@leogscdlr2894 2 жыл бұрын
words[1] == масло масляное. За такой нейминг в подворотне можно получить в бубен, потому что IDEшка может подсказывать, что есть такой массив, а фактически это только однобайтовая переменная. а левый программист может прийти на проект и попытаться вылезти за границу этого массива.
@user-dm6hq7eh4n
@user-dm6hq7eh4n 2 жыл бұрын
11:15 - не понятно, почему мы используем букву s. В предыдущем уроке Вы говорили, что для типа переменных char мы используем букву 'c' (английская). Массив же words у нас объявлен как char. Тогда почему вместо %c мы пишем %s?
@user-pd1ro8pc1i
@user-pd1ro8pc1i 2 жыл бұрын
чтобы вывести на экран целый массив
@artemsidorov7324
@artemsidorov7324 2 жыл бұрын
c - это один символ(char ) s - это строка(string)
@dmitriyshaykovskiy221
@dmitriyshaykovskiy221 4 жыл бұрын
15:37 считаешь массивы 1,2,3, хотя при выводе данных в консоль, далее 16:30 - говоришь, что счет начинается с 0 . по логике должно быть int array [2][3]=...??? или я что-то не так понял?
@chample1
@chample1 3 жыл бұрын
У него в двумерном массиве 3 столбца и 3 ряда, поэтому матрица получается array[3][3]
@user-fo1zv3lg2t
@user-fo1zv3lg2t 3 жыл бұрын
@@chample1 матрицу и ряды считаем не с 0?
@chample1
@chample1 3 жыл бұрын
@@user-fo1zv3lg2t с 0
@user-jg3dn6lf2k
@user-jg3dn6lf2k 3 жыл бұрын
в первом случае у нас размерность массива, а во втором он говорит про индексы, если я сам правильно понял.
@chample1
@chample1 3 жыл бұрын
@@user-jg3dn6lf2k Скорее всего, что так и есть
@topfilms6224
@topfilms6224 3 жыл бұрын
Так много инфы сложно)!🤯
@Ostup_Burtik
@Ostup_Burtik 3 жыл бұрын
Если хотеть то несложно. Я изучил Python и хочу виучить C.
@PostMapping
@PostMapping 4 жыл бұрын
После джавы все уже знакомы)
@user-cu2lk5zr8r
@user-cu2lk5zr8r 3 жыл бұрын
Ты тожэ джаву изучял и забил?
@PostMapping
@PostMapping 3 жыл бұрын
@@user-cu2lk5zr8r наоборот, изучаю все глубже и глубже....
@Ostup_Burtik
@Ostup_Burtik 3 жыл бұрын
@@PostMapping и после Python:-7
@mksmvnv
@mksmvnv 7 ай бұрын
а почему не показали, как вывести весь массив чисел и весь двумерный массив через принтф?( а не только один символ.
@axysor
@axysor 4 жыл бұрын
Инициализировать.
@Starkmander
@Starkmander 3 жыл бұрын
А возможно ли вывести весь массив чисел на экран,а не только по элементам?
@user-ie6jr3zo4d
@user-ie6jr3zo4d 3 жыл бұрын
Да, для одномерного массива возможно сделать его вывод поэлементно таким образом: int main() { int arr[]={3, 4, 5}; printf("arr=|%d %d %d|", arr[0], arr[1], arr[2]); return 0; }
@sofiasapsan1977
@sofiasapsan1977 2 жыл бұрын
Да, с помощью цикла: for(int i = 0; i
@yatik5166
@yatik5166 Жыл бұрын
В каком редакторе кода вы работаете?
@askarasadullin1418
@askarasadullin1418 Жыл бұрын
Это Xcode
@archiljghenti2865
@archiljghenti2865 4 жыл бұрын
Как называется ваш текстовый редактор?
@yukinakiu739
@yukinakiu739 4 жыл бұрын
Block::Code for Mac
@shometyle
@shometyle 3 жыл бұрын
консоль кс
@hunter-bg1bb
@hunter-bg1bb 3 жыл бұрын
Как прога называется, где он код пишет
@dmytrokhymytsia5036
@dmytrokhymytsia5036 3 жыл бұрын
Xcode скорее всего
@leogscdlr2894
@leogscdlr2894 2 жыл бұрын
@@dmytrokhymytsia5036 да, маковский икскод
@hewston2733
@hewston2733 4 жыл бұрын
Как-то я упустил момент, с каких это пор в С и С++ у элементов массива появились значения по умолчанию?
@user-cy3eu1nq8p
@user-cy3eu1nq8p 3 жыл бұрын
Автор відео трохи не правий. 🙂 Масиви в C та C++ заповнюються автоматично нулями тільки в тому випадку, якщо масив оголошений як глобальний, тобто за межами функції main. 🙂
@leogscdlr2894
@leogscdlr2894 2 жыл бұрын
ну если каллоком заполнять динамику, тогда да, будут значения))
@itsking8378
@itsking8378 5 ай бұрын
digga das beste
@aaoei511
@aaoei511 Жыл бұрын
Буквочка)
@rubinum_pof
@rubinum_pof 2 жыл бұрын
зачем после числа добавляем f, если мы уже указали, что тип данных float?
@leogscdlr2894
@leogscdlr2894 2 жыл бұрын
читабельность кода лучше.
@raffayen
@raffayen Жыл бұрын
@@leogscdlr2894 То есть необязательно добавлять f?
@leogscdlr2894
@leogscdlr2894 Жыл бұрын
@@raffayen необязательно. Скорее полезно для читабельности кода, а на функциональность не влияет
@user-oc8ck2sg1b
@user-oc8ck2sg1b 3 жыл бұрын
Здравствуйте, помогите, пожалуйста, написать программу, которая решает систему уравнений с x и y, включает ввод переменной альфа. Система уравнений : x = (sin(2*альфа) + cos(пи/альфа +1))/3+tg(альфа) ; y = e^( - альфа ) + sin^2(альфа + 1) . Спасибо.
@user-qe7md6tb5l
@user-qe7md6tb5l 3 жыл бұрын
Чо первокурсник, да?
@user-cm7gv7im9r
@user-cm7gv7im9r 3 жыл бұрын
Так у тебя не система, а просто 2 уравнения, в каждом из которых переменная альфа. Инициализируешь альфу, x и y, как float, подгружаешь библиотеку с мат. функциями, пишешь scanf функцию для ввода альфы, потом твои выражения, а потом printf(ответ)
@user-oc8ck2sg1b
@user-oc8ck2sg1b 3 жыл бұрын
@@user-cm7gv7im9r , спасибо !
@user-fy8ns5py6h
@user-fy8ns5py6h 4 жыл бұрын
Покажи-ка место в стандарте, где написано, что у переменных С есть значения по умолчанию.
@user-cy3eu1nq8p
@user-cy3eu1nq8p 3 жыл бұрын
Автор відео трохи не правий. 🙂 Масиви в C та C++ заповнюються автоматично нулями тільки в тому випадку, якщо масив оголошений як глобальний, тобто за межами функції main. 🙂
@nerikproton6512
@nerikproton6512 3 жыл бұрын
почему тут не говорится про рандомно сгенерированные массивы?
@NIVLON
@NIVLON 3 жыл бұрын
Я до этого урока всё время писал вырибле а можно было не писать
@user-vt7pr6mt1g
@user-vt7pr6mt1g 3 жыл бұрын
Int arr[5] = {5, 6, 7, 2, 56,}; Если с 0 начинается счет, то получается в фигурных у нас если считать с 0, то получаетя 0,1,2,3,4. Почему мы пишем тогда arr[5]
@miklyxamaklaiy112
@miklyxamaklaiy112 3 жыл бұрын
ЭМ, ты же сам нанписал 6 чисел.... 0 1 2 3 4 5
@user-vt7pr6mt1g
@user-vt7pr6mt1g 3 жыл бұрын
@@miklyxamaklaiy112 случайно, там без 89
@miklyxamaklaiy112
@miklyxamaklaiy112 3 жыл бұрын
@@user-vt7pr6mt1g бывает)
@user-jg3dn6lf2k
@user-jg3dn6lf2k 3 жыл бұрын
@@user-vt7pr6mt1g потому что исчисление индексов (номеров переменных в массиве) начинается с 0, а в квадратных скобках указывается число индексов, если бы правило начала отсчета с 0 распространялось бы и на скобки, то сделать пустой массив невозможно,
@user-cy3eu1nq8p
@user-cy3eu1nq8p 3 жыл бұрын
Тому що ми пишемо не номер останнього елементу, а загальну кількість елементів масиву, а потім вже з нуля можемо їх діставати. 🙂
@hey2956
@hey2956 4 жыл бұрын
Привет
@ArmOva-007
@ArmOva-007 Жыл бұрын
Добрый день , подскажите как все таки вывести в printf весь масив из цифр я пишу так и он всегда последнее значение показывает , но не все . выглядит так printf("%d",arr[5, 7, 2, 56, 34, 89]) а по итогу только 89 показывает в cmd .
@rainbowice341
@rainbowice341 Жыл бұрын
Никогда не думал, что буду искать помощи в комментах на ютубе, но из-за того что в интернете нет нормальной информации,крч,как посчитать сумму элементов строки двумерного массива?Я понимаю, что здесь могут сидеть умные люди поэтому прошу вас ПОООМАГИТЕ
@kingdomgames4383
@kingdomgames4383 Жыл бұрын
я не чоень понял,что значит %s?
@JohnJTraston
@JohnJTraston Жыл бұрын
Нет никаких "значений по умолчанию". Ты там массив на стеке создал, если не проинициализировал, то будет мусор.
@viktornikolaev1826
@viktornikolaev1826 2 жыл бұрын
10:28
@evgeniichikishev2096
@evgeniichikishev2096 3 жыл бұрын
А как вывести на экран целый массив?
@user-sd3sp7xv6z
@user-sd3sp7xv6z 3 жыл бұрын
printf ("%s", words);
@yukinakiu739
@yukinakiu739 4 жыл бұрын
Люди которые пишут char *var = "Вошли в чат";
@user-jp9pi8of9d
@user-jp9pi8of9d 3 жыл бұрын
Ого с и с++ похожи
@kotomen_2019
@kotomen_2019 2 жыл бұрын
чел и ты серьёзно этого не знал? c++ это же улучшеный c
@user-jp9pi8of9d
@user-jp9pi8of9d 2 жыл бұрын
@@kotomen_2019 точнее с++ это с только есть ООП
@kotomen_2019
@kotomen_2019 2 жыл бұрын
@@user-jp9pi8of9d ну ООП очень помогает даже например работа с игроками персонажами и т д
@user-jp9pi8of9d
@user-jp9pi8of9d 2 жыл бұрын
@@kotomen_2019 ну да
@kotomen_2019
@kotomen_2019 2 жыл бұрын
@@user-jp9pi8of9d ксатате где можно найти нормальный компилятор под c++
@user-qe7md6tb5l
@user-qe7md6tb5l 3 жыл бұрын
Слишком мало информацыии, где к примеру сортировка?
@impala-rc6zb
@impala-rc6zb 3 жыл бұрын
А где заполнение их рандомное ?
@user-cu2lk5zr8r
@user-cu2lk5zr8r 3 жыл бұрын
Он не читает коменты😀
@robbarret9568
@robbarret9568 2 жыл бұрын
Что за редактор?
@QuerroShooterov
@QuerroShooterov 2 жыл бұрын
маковский xcode
@gavrilihin
@gavrilihin 4 жыл бұрын
Автор мало знает про язык C. У переменных нет значений по умолчанию
@whoami.f1
@whoami.f1 4 жыл бұрын
Есть, но только если они создаются в глобальном пространстве.
@gavrilihin
@gavrilihin 4 жыл бұрын
@@whoami.f1 подтверждаю, но это не тот случай.
@user-hq6zf8kz5q
@user-hq6zf8kz5q 4 жыл бұрын
Этот автор не знает толком ни один язык, но видеоуроков наклепал по всему чему только можно
@refeilodev4117
@refeilodev4117 4 жыл бұрын
pastenamehere Профи сишник скажет что по умолчанию присвоить значение без кода можно только в сегменте данных, а гоша здесь все переменные определяет в функции значит они используют память в стэке. Если он выведет элемент в стеке без присваивания то он получит значение переменной которая до этого лежало на этом месте стэка.
@lagglite3180
@lagglite3180 4 жыл бұрын
Любишь свою маму? Подписка - да Игнор - нет
@user-cv3sc6qi2e
@user-cv3sc6qi2e 4 жыл бұрын
Как меня бесят такие дегроеды
@Draqaz_Cogliostro
@Draqaz_Cogliostro 2 ай бұрын
кто из школы 21?
didn't want to let me in #tiktok
00:20
Анастасия Тарасова
Рет қаралды 11 МЛН
[Vowel]물고기는 물에서 살아야 해🐟🤣Fish have to live in the water #funny
00:53
小路飞姐姐居然让路飞小路飞都消失了#海贼王  #路飞
00:47
路飞与唐舞桐
Рет қаралды 71 МЛН
Адреса и указатели в Си. Адресная арифметика
27:47
Тимофей Хирьянов
Рет қаралды 158 М.
Язык Си для начинающих / #6 - Функции в Си
20:09
Гоша Дударь
Рет қаралды 108 М.
C++ Разработчик учит Python
28:01
Winderton
Рет қаралды 471 М.