Торрент: rutracker.org/f... forum.manysourc... - комментарии оставляйте здесь/ Научимся работать с адресами переменных
Пікірлер: 143
@РоднаяНяшка10 жыл бұрын
Ну хоть кто то понятно объясняет, спасибо парень. Читаешь сидишь материал по теме и все элементарно как 2+2, а потом ВНЕЗАПНО с середины статьи начинается непонятно откуда взявшаяся чушь. Ты няша:3
@SirLancevrot10 жыл бұрын
Наверно лучшие уроки по С++ на русском языке, спасибо :)
@barinovmax55446 жыл бұрын
@rereadd9 жыл бұрын
О указателях на 12:44
@ivanklykov26139 жыл бұрын
Проще же, и компактнее, прога которая пишет строку задом на перёд. int main () { int i; setlocale(LC_ALL,"RUS"); char str[100]; cout =0;i--) { cout
@xmarkuesss88275 жыл бұрын
Лучшие уроки
@Unity3dFM11 жыл бұрын
наконец то дождался!!! спасибо за серию!!!
@gde_strannik46967 жыл бұрын
есть же функция strrev которая меняет порядок символов на противоположный
@TheWilliamHome8 жыл бұрын
Не понимаю зачем дизлайкать! Если вы тупые и не понимаете то это не значит что видео плохое
@skrilelf8 жыл бұрын
+William Home А зачем нужны дизлайки? Я прост такой плохой и решил зайти в рандомное видео и дизлайкнуть на зло? От нечего делать дизлайкать людям?
@tymchenkoyevhen30457 жыл бұрын
99,99% людей увидя что из 1000 лайков нету дизлайков поставлят как раз дизлайк (Типа особенные)
@legatt.8 жыл бұрын
А почему, если я ввожу число double 0.999999 то выводится единица? Это как-то можно обойти или одна из тонкостей си, как неточность под конец вывода(я имею виду: 0.1111111111135...)?
@nickbarton52519 жыл бұрын
Двойной массив и опять таки все работает без указателей int main(){ setlocale(LC_ALL, "Russian"); int N, M; cin>>N>>M; int A[N][M]; for(int i=0; i
@KennyMcKormic12311 жыл бұрын
Новый подход к подаче материала, можешь посмотреть уроки по 2 мерным массивам они здесь есть
@mastermind159379 жыл бұрын
Не понял что значит "строка эта адрес первого элемента". Адрес - это шестнадцатеричное число, которое система автоматически выделяет в памяти, а строка это набор символов, которые вводит человек. Как одно может равняться другому?
@KennyMcKormic1239 жыл бұрын
Сторка это набор байт, где каждый байт символ, а с точки зрения С++ строка это массив, а массив лежит в памяти, адрес первого байта это и есть имя массива(строки), остальные символы получаются путмем инкрементирования указателя, пока не встретиться null терминал('\0'). Правильней было сказать имя строки - это адрес первого элемента.
@vitaliychervatyuk72178 жыл бұрын
3-5 лет постоянной практики) и будут вас называть Middle C++ programmer)
@bluepotchannel47458 жыл бұрын
Аааа, сложна D:
@ИмяФамилия-е1ж4т8 жыл бұрын
Первая задача. #include using namespace std; void main() { char mass[80]; bool tf = false; cin.getline(mass, 80); for (int i(strlen(mass)); i != 0; i--) { cout
@MrFeeman110 жыл бұрын
Можно ли в программе Microsoft Visual C++ 2010 Express сделать что бы при вводе слова, так же выпадали подсказки?
@indi_j10 жыл бұрын
подскажите, пожалуйста, как сделать так, чтобы выводились не все слова наоборот, а только предложения в обратно порядке, например даны предложения 1,2,3, а вывести нужно 3,2,1
@Sleepmalice9 жыл бұрын
Денис а у меня вопрос именно по содержанию твоего курса.Почему именно такое содержание и именно такие задачи? ты как то выстраивал курс по какому то принципу или же считаешь что эти темы наиболее важны впринципе?
@владиус8 жыл бұрын
Открой любой учебник по с++ там похожие содержания. Хотя думаю через год ты сам все узнал, я за пол года базовый курс освоил
@freedoom96547 жыл бұрын
я не понял как поднимается вверх этот символ, объясните пожалуйста
@SkyGrel199 жыл бұрын
А можно же в программе вывода строки в обратном порядке сначала ввести строку, а потом вывести по очереди весь массив в обратном порядке? #include #include #include #include using std::cout; using std::endl; using std::cin; int main() { setlocale(LC_ALL , "Russian"); char str[80]; do { cout
@nikitalebediev99088 жыл бұрын
А для чего указатели в играх
@Crypto__Baron9 жыл бұрын
Спасибо тебе
@KlinovAS7 жыл бұрын
Честно говоря я разочарован немножко о С++. Во многих языках String'овая переменная пишется очень просто и без явного выделения памяти. Ждал ждал и не понял до конца. К примеру мне нужно парсить что-то в будушем. Мои String'овые переменные будут постоянно изменятся в зависимости от их динамической принадлежности. Уже даже наплевать на скорость выполнения. Сегодня скорость никого не волнует, разве что при просчете следующего хода в шахматах... Я хочу записать просто как в VB или JS или PHP: $A = "Чтото"; Потом $A = $A + " еще чтото..." Одно хорошо в С++, что я могу смотреть что делается в памяти, но это хорошо в плане только что взлома ПО и прокачки игр или ПО. Какие еще приемущества чтения адресного пространства? Только хакерские. Читать напрямую из портов, сканирование сети и многое другое, что в простеньких языках закрыто. Так зачем С++ у меня вопрос возникает? Он как бы должен быть переходом между машинным кодом и более простым языком. У меня такое сложилось впечатление. По популярносте С++ занимает совсем не последнее место, а Питон почти первое. Углубился в Питон и чуть не ох*ел насколько он конченый. В первую очередь я охренел когда увидел что для цикла For от 1 до 100 нужно указывать массив от 1 до 100. А теперь представте эту пое*нь на машинном коде. Бинарники и асемблерщики наверное охеривают от змеинового программирования. С++шка еще держится не плохо. Ну посмотрим дальше хорошие видосики, что нам покажут классы. И стоило ли гадить на обычные языки как VB. VB с классами работает медленно (в два раза). У меня две книги (библии): Visual Basic 6 [Б.Сайлер и Б.Спотс] (всю прочел) и Visual C++ [К.Грегори] (прочитал около 100 страниц). В VB написано все очень интересно по порядку. В конце доступно описано все о классах. С++ книга начинается сразу с классов и уже под конец начинается о окнах у виндовс, которые без 'include и using и море мусор-кода по умолачнию хрен таки просто сделаешь. На да хрен с этим кодом. Меня шеф постоянно попрекает, что я пользуюсь виндовс ХР, а типа нужно уже 10тку осваивать. На что я отвечаю, что сам виндовс почти не изменился в лучую сторону, так как количество элементов не выросло, программы не стали 3д да и фоновых приложений все больше и больше, а мне от этого никакого кайфа. Даже "Поиск" раньше искал по всему что хочу, а сейчас куда-то пропало даже "дата создания". И таких примеров просто море. Так вот. В 10тке будет смешно говорить о таком явлении как консоль, а если проще - о DOS, команды CLS и так далее. Но С++ так и осталась той С++ которая базируется на все тем же что при железе. Изучая дальше С++ я хочу понять на сколько действительно отличается С++ от других языков и насколько амбициозно или по справедливости было высказано публично. Ну и также для себя понять: нужно мне или не нужно. Конечно что нужно. Уже есть планы и для С++. К примеру работать с массивами в VB просто отвратительно и неудобно. Ява скрипт показывает мастерство в этом плане и по скорости даже радует. Так что серверная программа сделанная на С++ это может быть даже очень перспективно. И я на это пока что надеюсь. Спасибо за урок.
@АлесяОлеся-е7е6 жыл бұрын
Если честно, я перечитал твой коммент 4 раза, кроме ужасного форматирования, я заметил что ты не можешь донести мысль. Начнем с того что строки изначально появились в Си, их первое представления было, какое то количество адресного пространства на строковый литерал. char* str = "Testing"; Примерно так выглядила строка в Си, в С++ в свою очередь пошли иным путем, реализовали строки как коллекцию символов без явного разделителя байт. То есть массив строка. Но все это лишь условности перед классом string который дарит нам реальные строки. Дак а в чем замес то!?
@KennyMcKormic12311 жыл бұрын
Мой русский - это особый случай.
@567ilona8 жыл бұрын
//программа считает кол-во слов с определенным символом. #include #include using namespace std; int main() { setlocale(LC_ALL, "RUS"); int bukva = 0; bool clovo= false; char mas[100]; cin.getline(mas,100); for(int i=0; i
@СтаниславПикун6 жыл бұрын
можно было написать reverse(str.begin();str.end()) строка бы перевернулась
@Minazavr11 жыл бұрын
он же сказал уроки новые с помарками.
@Ii_Naomasa_san7 жыл бұрын
Боже, сколько еще раз надо посмотреть это видео, чтобы понять, как эти чертовы указатели работают???
@АлесяОлеся-е7е6 жыл бұрын
Ровно один раз, и немного практики. А еще дока вроде cppstudio.com.
У вас ошибка в первом условном операторе if, посмотрите. Ваш алгоритм решает совсем другую задачу. Вы считаете кол-во слов, которые начинаются с буквы 'b'.
@pavelnevagno97239 жыл бұрын
Николай Самсонов Здесь верная реализация. Проверьте, если не верите
@igorscream7 жыл бұрын
До "кОкого"? Ты прикалываешься?
@АлесяОлеся-е7е6 жыл бұрын
В смысле? Это урок по грамматике, или по программированию?
@bobblack54958 жыл бұрын
Не уверен, что на русском языке существуют лучшие уроки по с++, чем эти. Но как же режет слух неграмотность ведущего, я извиняюсь конечно, но до "кокого числа", "резульТАтирующая матрица"... жесть) но спасибо за труд!
@legatt.8 жыл бұрын
слух??
@ИльдарБулатов-с7р6 жыл бұрын
могу посоветовать еще один канал, мне лично тож нравиться, он более глубокие вещи рассматривает)
@wangulsan30376 жыл бұрын
какой?
@Stalevik9 жыл бұрын
Спасибо конечно, но пол часа объяснять что такое указатель... это... както... слишком.
@aIis_ka4 жыл бұрын
У меня вот такая строка наоборот: cout = 0; i--) // Вывожу строку задом наперед cout
@TAP1X390 Жыл бұрын
Друг я прочитал
@ИльяПостильга-в6ц7 жыл бұрын
Денис, почему прекратили снимать новые видео?
@ДышельЮрий9 жыл бұрын
Спасибки за уроки! Не мямлиш а нормально обьясняеш. Живи долго и процветай \\//.
@ДмитрийЕфимов-б6й10 жыл бұрын
Очень понравился урок, потрясающе объясняешь, просто, доступно без лишних слов и с быстрой скоростью, ещё успеваешь параллельно много полезной информации давать. Спасибо тебе огромное, все твои уроки классные, прям рад, что есть такие толковые люди.))))
@ProgScriProf9 жыл бұрын
До твоих уроков никогда не понимал применение указателей и их смысл. Теперь я всё отлично понял! Спасибо большое!
@itechname10 жыл бұрын
Денис, спасибо за уроки, все ясно и четко объясняешь!
@Letsgowwwq6 жыл бұрын
2018...
@denisnasibullin77798 жыл бұрын
Получаю огромные удовольствия от решения ваших Д/З
@Andrew-ht3dj6 жыл бұрын
а почему на 19:00 разница между адресами была в 10 байт ,если первым был int, значит следующая переменная должна иметь адрес адрес первой+4?
@aIis_ka4 жыл бұрын
Не совсем ясно, к тому - же если поменять строки местами, то адресация будет снизу вверх
@iGoha300610 жыл бұрын
кокого :D
@daniilbarinov97713 жыл бұрын
Не часто пишу комментарии, но не оставить положительный отзыв - грех. Я влюбился в эти уроки по C++. Ньюансы, какие-то фишки (например, что если мы не знаем на что в итоге будет ссылаться указатель, то можно использовать тип void), практические задания... Ребята, если вы как я были в поиске лучших уроков на ютубе по плюсам и перебирали самые разные каналы - остановитесь на этом. Я потратил 6 часов чистого времени, пересмотрел на десятке разных каналов по 10 видео из серии и остановился на этом курсе видеоуроков. Поверьте, лучше вы вряд ли найдёте. P.S. автору огромное спасибо. Писать курсовую на плюсах, а я на первом курсе на плюсы подзабил. Теперь приходится всякие темы с "подковыркой" и недостаток практики восстанавливать, с чем данная серия видео очень помогает!
@KolarusTV8 жыл бұрын
Полностью скопировал ваш код из ДЗ про умножение матриц, после ввода программа крашит
@ИванКрасноярский-е3я2 жыл бұрын
до кОкого числа
@DimaIrkutsk10 жыл бұрын
А адреса всегда меняются? То есть, если я допустим запущу еще какой-нибудь процесс и запущу программу, то адреса ее переменных изменятся?
@Ra1d0N8 жыл бұрын
насчет динамического массива, я может ошибаюсь, но динамического массива "несуществует" и при написании кода int* d = new int[N]; мы просто выделяем память для такого массива и после инициализации массив станет статическим, и его размер уже не изменить, можно написать такое d = new Int[25]; но это просто смена адреса куда указывает указатель. Я в С++ не силен, но в Java для возможности динамического расширения обьема "массива" были придуманы коллекции(кстати, если не ошибаюсь они в Java пришли как раз из С++, но не уверен), а точнее ArrayList, в котором присутствует расширение массива, да и то путем перезаписи старого массива в новый. В общем таким способом мы не создаем динамический массив, так как его обьем расширить нельзя, вернее вроде можно, я когда-то читал что там после танцов с бубнами и долгих мучений в исходниках можно как-то переписать процесс выделения памяти для массива.
@kirkbou67588 жыл бұрын
+Raidon для перераспределения памяти в си есть функция realloc
@ДмитрийКозловский-ъ7г10 жыл бұрын
Денис, не пойму, зачем тратить память на еще один массив, если нужно просто вывести обратный порядок строки?! for(int i(strlen(str) - 1); i != - 1; i- -) std::cout
@KennyMcKormic12310 жыл бұрын
Хорошо когда нужно вывести тогда все нормально, один цикл не повредит, а если нужно работать с этой строкой то придется каждый раз писать цикл, это накладные операции процессору, проще хранить строку в памяти
@igormaslov45748 жыл бұрын
Задания домой как по мне слишком сложные, я пол года работаю с циклами, массивами,типами данных в mathlab, проблем особо не было, а здесь не могу сделать не одного дз практически......
@denisnasibullin77798 жыл бұрын
Я каждый день прохожу по 1 уроку, но первые 3 урока прошёл за день.
@SamDestrThrones8 жыл бұрын
Ребят прошу объясните как расшифровывается эта запись: *int **p = new int**[N]; на 58:58, а то что то вообще как то не укладывается в голове
@владиус8 жыл бұрын
**p это указатель на указатель, а раз он указатель на указатель, то динамическая память создается из колличества N указателей, которые указывают на переменные числа
@владиус8 жыл бұрын
т.е в этой записи создается указатель на массив из N индексов int *p = new int[N] а в этой указатель на указатель массивов индекса int **p = new int*[N]
@trix40813 жыл бұрын
кто смотрит в 2021?))
@Cocosik729 жыл бұрын
Задача на движение курсора) char str[80] = "", c = '|', c1; int index = 0, indey = 0; do { c1 = (char)_getch(); system("cls"); str[index + 1] = '\0'; for (int i = 0; i
@grangeld9 жыл бұрын
что-то указатели мне не дались, там где про массивы =( А в остальном все классно объясняешь!
@Minazavr11 жыл бұрын
денис будет ли ...уроки по c++ builder или по прагромимированию программ не консольных, а с красивым интерфейсом ?
@VentureMLops9 жыл бұрын
супер уроки!
@nickbarton52519 жыл бұрын
Обьясните пожалуйста, Создал ради интереса следующую программу динамического массива без выделения на него памяти и она оказалась рабочей. Для чего теперь динамические массивы и указатели если все и так работает? int main(){ setlocale(LC_ALL, "Russian"); int N; cin>>N; int S[N]; for(int i=0; i
@nickbarton52519 жыл бұрын
Я же говорю что код который я написал высше работает, а ваш я пробовал еще раньше. Компилировал в Dev C++
@nickbarton52519 жыл бұрын
а я сразу в qt перешел
@trufflechannel41457 жыл бұрын
Это зависит от стандарта языка. В С++11 можно инициализировать массивы не константой, а просто переменной
@SpeakEnglish8410 жыл бұрын
Денис, у меня возник вопрос по-поводу bool *SimpleNimber = new bool[N+1]; обычно такую запись мы используем для расширения динамического массива, а в вашем коде мы это делаем чтобы программа считала и тот элемент до которого мы ввели массив? Я не совсем понимаю. Спасибо
@morislife70498 жыл бұрын
у меня указатель всегда занимает 8 байт, а не 4. И да, он позволяет сделать себя типа void или типа переменной на которую он указывает, но никак не другого типа отличного от переменной. Почему у нас с вами такая разница?) это от компилятора зависит?
@arinamartens68587 жыл бұрын
потрясающе, спасибо большое, просто все ПРЕДЕЛЬНО понятно, столько нового узнала, хотя уже не новичок, и с указателями долго не могла разобраться, теперь поняла
@xabikiqwe9 жыл бұрын
Почему не рассказано про случай двойного выделения? Т.е. если мне необходимо выделить массив под 10 элементов, а затем увеличить этот массив как тогда поступать?
@CyberGenius7779 жыл бұрын
a3[i][j] += a1[i][m] * a2[m][j]; можешь объяснить, почему здесь [i][m] * [m][j] Что тут происходит?
@FANTOM347RB7 жыл бұрын
48:00 Можно и без заморочки с указателями сделать int main(){ int a; cin >> a; int B[a]; for(int i = 0; i < a; i++){ B[i] = i; } for(int i = 0; i < a; i++){ cout
@bulatsuleymanov959111 жыл бұрын
Денис, if (c1 == 'A' || c1 == 'a' && index > 0), у тебя - >= 0; попробуй курсор сначала двигать вправо, затем до конца влево, курсор сменится на стандартный, а не тот, что ' | '. Кстати, большое спасибо за уроки, все очень хорошо, доступно изложено.
@ДмитрийБуляница11 жыл бұрын
Денис,если не затруднит,как нужно объявить двумерный динамический массив,чтобы к его элементам имели доступ различные ф-ции и что и как надо передавать,чтобы одна ф-ция могла работать с разными массивами
@TheAutoArmy11 жыл бұрын
А можешь сделать отдельный урок на тему "Начало работы в OpenGL в Visual Studio 2012"? Во многих книгах по теме OpenGL автор сразу начинает рассказывать про функции, а как запустить его на Visual Studio 2012 или C++ Builder не говорят.
@egorcpp10 жыл бұрын
ну что же за привычка переменные обьявлять с большой буквы и вида M1, M2. Разве так сложно сразу прививать хороший, ментально понятный стиль программирования. А вообще всем советую C++ Primer Прата почитать, там все понятно и логично описанно.
@KennyMcKormic12310 жыл бұрын
А как ты хочешь, переменные и имена методов с маленькой буквы, а название классов с большой? Это скорее стандарт Java. Можно переменные члены класса начинать с mAppple; m - member, есть еще несколько конвенций. Я на С++ придерживаюсь начинать все с большой буквы, а имена классов с маленькой и ненужно говорить что везде требуют одну конвенцию в разных компаниях очень разный подход к именованию.
@АндрейАрканзасов8 жыл бұрын
+Denis Markov справедливо
@ireeshke74017 жыл бұрын
Символ в консоле не двигается, сделал как у тебя, плюс ты даже не продемонстрировал работу той проги)
@ДмитрийБуляница11 жыл бұрын
или может как-то скинуть тебе то,что имею на данный момент.возможно,будет легче и увидеть,в чем ошибка,и мне понять
@mrcomedytiger10 жыл бұрын
можно упростить нахождение в строке символа b у меня получилось так #include "stdafx.h" #include #include // тут даже не нужна эта библиотека если не ошибаюсь #include using namespace std; // я думаю так проще int main() { try { char str1[40] = "block bblob sclob stock booble"; // Ввод отсутствует bool inWord = false; int numChar = 0; // количество символов b и/или B int j = 0; for(int i = 0 ; str1[i] != '\0'; i++) if(str1[j] == 'b' || str1 [j] == 'B') // проверка на символ b или B в строке { j++; numChar++; } else { j++; } cout
@mrcomedytiger10 жыл бұрын
как бе нет
@mrcomedytiger10 жыл бұрын
ну , давай умный школьник , ссылку в студию
@Sleepmalice9 жыл бұрын
mrcomedytiger неочень понял зачем тебе переменная j вместо i? где и как используется inWord?
@pythonpc80907 жыл бұрын
кто-то перехимичил :0
@AkzholSlamzhanov4 жыл бұрын
ну и звчем нужен этот указатель?
@aIis_ka4 жыл бұрын
ты прошёл курс?
@jiameponline43210 жыл бұрын
Для очищения выделенной памяти Вы пишите delete [] p; Как я понял, [] сопоставимо с "*". Можно ли использовать delete *p ?
@KennyMcKormic12310 жыл бұрын
delete [] p; это для new int[20]; //тоесть для массива, а если new int; то тогда delete p;
@jiameponline43210 жыл бұрын
Denis Markov я понимаю, но равны ли выражения delete [] p и delete *p как равны char *argv[] и char **argv, если я хочу удалить один и тот же массив.
@jiameponline43210 жыл бұрын
Denis Markov можно ли создать динамический массив, длину которого я не знаю можно сказать до конца выполнения программы? Суть - перевести из десятичной системы исчисления в двоичную. Тоесть, я делю с остатком и по этому определяю что записать в строку. Числа могут быть разные, поэтому не хотелось бы под 4 символа выделять 100 символов в инициализации строки. В паскале знаю такую вещь, как список. Вот и интересует, можно ли заполнять строку не указывая ее длину и не инициализируя ее содержимое.
+TheMrMakara Да что там не читаемого? Он пытается перевернуть строку задом на перед, меняя символы местами с начала и с конца. Вот только.. в начале, в условии оператора if() зачем-то операция присваивания))) Но даже если это ошибка синтаксиса, то сравнивать половину количества символов в строке с нулем - бесполезная операция.
@filimir88947 жыл бұрын
Да Спасе мне в 12 лет всё понятно
@13Melmoth10 жыл бұрын
А вы правда делаете что хотите?
@dobryash36711 жыл бұрын
Стандартная музыка из camtasio.
@АндрейКульбеда-ю3и7 жыл бұрын
помогите разобраться, M3[i][j] += M1[i][k] * M2[k][j]; 10:00, с матрицей я разобрался, но все таки не понимаю данную строку. Кто может разобрать подробнее ?
@aIis_ka4 жыл бұрын
Много времени прошло, возможно я бы смог объяснить
@antongubankov43959 жыл бұрын
delete [d i' l i: t] :)
@igorscream6 жыл бұрын
И еще тип указателя говорит, на сколько байтов надо делать шаг при инкремента и декремента. И я думаю, что это первоочередная задача указателя.
@АлесяОлеся-е7е6 жыл бұрын
Думаешь или знаешь? И зачем ты об этом написал? Он ведь, и так об этом говорил.
@kanattorogeldiev479910 жыл бұрын
можете объяснить for (int i(0); i < N;i++) delete[] p[i];//? delete[]p; //?
@anotherspy33856 жыл бұрын
Kanat Torogeldiev это функция деструктор. Она очищает память от данных, которые занимали переменные класса с помощью функции delete. delete[] - удалить массив
@МаксимАтюцкий9 жыл бұрын
лично я объявляю массивы размером переменных, указанных ранее int a; cin >> a; int arr[a]; и все прекрасно работает
@AntoxaShow8 жыл бұрын
+Максим Атюцкий это грубая ошибка с точки зрения программирования
@МаксимАтюцкий8 жыл бұрын
+AntoxaShow из-за возможного выхода за пределы массива?
@АртёмСтрельцов-ь6г8 жыл бұрын
А если я указателем типа int укажу на тип char что будет?