Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥36👍7🤝6
Переведённые на русский язык лекции топового Гарвардского курса CS50 по основам программирования. Курс охватывает ключевые концепции информатики, такие как алгоритмы, структуры данных, веб-разработка и многое другое.
Ссылка на плейлист: YouTube🖤
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍6🤝2👎1
1. Указатели: Где живут данные — это такие "хитрые" переменные, которые хранят не данные, а адреса других переменных:
int x = 10;
int* ptr = &a; // ptr хранит адрес переменной a
2. Ссылки: Удобные "алиасы" — нечто вроде альтернативных имён для переменных. Позволяют обращаться к одной и той же переменной под разными именами:
int& ref = x; // ref — это просто другое имя для переменной x
3. Указатели против ссылок — Вот в чём интересная штука: указатели могут быть неинициализированными или "нулевыми", что указывает на отсутствие адреса.
А вот ссылки такого себе позволить не могут. Ссылку обязательно нужно сразу инициализировать и после этого она не может быть переназначена на что-то другое:
int* ptr2 = nullptr; // указатель может быть пустым
// int& ref2; // ошибка, ссылку нельзя оставить неинициализированной
4. Указатели и ссылки в функциях —когда вы передаёте аргументы в функции, указатели и ссылки позволяют не копировать переменные, а передавать их адреса или алиасы:
void increment(int* ptr) {
(*ptr)++; // изменение значения по указателю
}
increment(&a); // передаём адрес переменной a
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23👍6🤝3
📖 Контролируемый взлом
⬇️ Скачать книгу
📣 C++ Ready | #книга
Книга предназначена как для профессионалов в области информационной безопасности, так и для широкой аудитории, интересующейся темой киберугроз и защиты данных
Автор: Юрий Другач
Год: 2024
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍1👎1
Летс го, в этом посте изучим использование C++ шаблонов, которые позволяют создавать универсальные функции и классы. Вы узнаете про:
- Шаблон для нахождения максимума
- Шаблон класса для контейнера
- Шаблон с несколькими параметрами
🔥 — если узнал новое
🤝 — если уже пользовался
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥29🤝12👍4
This media is not supported in your browser
VIEW IN TELEGRAM
Посоветую вам очередную интересную платформу — Codingame
Здесь собрано много крутых заданий, которые вы будете решать, играя в игру, так можно провести время весело и с пользой
📌 Ссылочка: codingame.com
📣 C++ Ready | #ресурс
Здесь собрано много крутых заданий, которые вы будете решать, играя в игру, так можно провести время весело и с пользой
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥3🤝2
👍12🔥3
Знали что, многие допускают ошибку при использовании оператора delete?
Сегодня как раз ее разберем. Распространенную ошибку в C++ при работе с операторами delete и delete[], она может привести к сбоям программы и утечкам памяти:
Операторы
Для освобождения памяти, выделенной с помощью
Правильное использование delete[]:
Другой распространенный случай — удаление одной и той же памяти дважды. Это может привести к неопределенному поведению:
Установить указатель в nullptr
После того как память освобождена, всегда обнуляйте указатель:
🔥 Правильное использование этих операторов — ключ к предотвращению утечек памяти и ошибок в управлении памятью.
Всегда следите за тем, какой тип памяти вы освобождаете, и избегайте двойного удаления.
📣 C++ Ready | #практика
Сегодня как раз ее разберем. Распространенную ошибку в C++ при работе с операторами delete и delete[], она может привести к сбоям программы и утечкам памяти:
Операторы
delete
и delete[]
предназначены для освобождения памяти, выделенной с помощью new
и new[]
соответственно. Часто можно столкнуться с ошибками, если перепутать эти операторы:int* ptr = new int[5]; // Выделили память для массива
delete ptr; // Ошибка! Использован неправильный оператор
Для освобождения памяти, выделенной с помощью
new[]
, нужно использовать delete[]
.Правильное использование delete[]:
int* ptr = new int[5]; // Выделили память для массива
delete[] ptr; // Правильно освобождаем память
Другой распространенный случай — удаление одной и той же памяти дважды. Это может привести к неопределенному поведению:
int* ptr = new int[5];
delete[] ptr; // Освободили память
delete[] ptr; // Ошибка: память уже освобождена
Установить указатель в nullptr
После того как память освобождена, всегда обнуляйте указатель:
int* ptr = new int[5];
delete[] ptr;
ptr = nullptr; // Указатель больше не указывает на освобожденную память
🔥 Правильное использование этих операторов — ключ к предотвращению утечек памяти и ошибок в управлении памятью.
Всегда следите за тем, какой тип памяти вы освобождаете, и избегайте двойного удаления.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23👍13🤝4
В этом посте мы создадим систему отслеживания задач с использованием очереди с приоритетами.
- Создание структуры задачи
- Добавление задачи в очередь
- Выполнение задачи
- Основная программа
🔥 — если узнал новое
🤝 — если уже пользовался
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥26🤝7👍5