mirror of
https://github.com/adambard/learnxinyminutes-docs.git
synced 2024-11-22 12:32:09 +03:00
commit
2e04696cf7
@ -43,11 +43,11 @@ int main(int argc, char** argv)
|
||||
// Аргументы командной строки, переданные в программу, хранятся в переменных
|
||||
// argc и argv, так же, как и в C.
|
||||
// argc указывает на количество аргументов,
|
||||
// а argv является массивом C-подобных строк (char*), который непосредсвенно
|
||||
// а argv является массивом C-подобных строк (char*), который непосредственно
|
||||
// содержит аргументы.
|
||||
// Первым аргументом всегда передается имя программы.
|
||||
// argc и argv могут быть опущены, если вы не планируете работать с аругментами
|
||||
// коммандной строки.
|
||||
// argc и argv могут быть опущены, если вы не планируете работать с аргументами
|
||||
// командной строки.
|
||||
// Тогда сигнатура функции будет иметь следующий вид: int main()
|
||||
|
||||
// Возвращаемое значение 0 указывает на успешное завершение программы.
|
||||
@ -162,7 +162,7 @@ void foo()
|
||||
|
||||
int main()
|
||||
{
|
||||
// Включает все функци из пространства имен Second в текущую область видимости.
|
||||
// Включает все функции из пространства имен Second в текущую область видимости.
|
||||
// Обратите внимание, что простой вызов foo() больше не работает,
|
||||
// так как теперь не ясно, вызываем ли мы foo из пространства имен Second, или
|
||||
// из глобальной области видимости.
|
||||
@ -797,7 +797,7 @@ void doSomethingWithAFile(const std::string& filename)
|
||||
// - Контейнеры - стандартная библиотека связанных списков, векторы
|
||||
// (т.е. самоизменяемые массивы), хэш-таблицы и все остальное автоматически
|
||||
// уничтожается сразу же, когда выходит за пределы области видимости.
|
||||
// - Ипользование мьютексов lock_guard и unique_lock
|
||||
// - Использование мьютексов lock_guard и unique_lock
|
||||
|
||||
// Контейнеры с пользовательскими классами в качестве ключей требуют
|
||||
// сравнивающих функций в самом объекте или как указатель на функцию. Примитивы
|
||||
|
@ -77,7 +77,7 @@ int main() {
|
||||
// sizeof(obj) возвращает размер объекта obj в байтах.
|
||||
printf("%zu\n", sizeof(int)); // => 4 (на большинстве машин int занимает 4 байта)
|
||||
|
||||
// Если аргуметом sizeof будет выражение, то этот аргумент вычисляется
|
||||
// Если аргументом sizeof будет выражение, то этот аргумент вычисляется
|
||||
// ещё во время компиляции кода (кроме динамических массивов).
|
||||
int a = 1;
|
||||
// size_t это беззнаковый целый тип который использует как минимум 2 байта
|
||||
@ -308,7 +308,7 @@ int main() {
|
||||
// Это работает, потому что при обращении к имени массива возвращается
|
||||
// указатель на первый элемент.
|
||||
// Например, когда массив передаётся в функцию или присваивается указателю, он
|
||||
// неяввно преобразуется в указатель.
|
||||
// неявно преобразуется в указатель.
|
||||
// Исключения: когда массив является аргументом для оператор '&':
|
||||
int arr[10];
|
||||
int (*ptr_to_arr)[10] = &arr; // &arr не является 'int *'!
|
||||
@ -335,7 +335,7 @@ int main() {
|
||||
|
||||
// Работа с памятью с помощью указателей может давать неожиданные и
|
||||
// непредсказуемые результаты.
|
||||
printf("%d\n", *(my_ptr + 21)); // => Напечатает кто-нибудь-знает-что?
|
||||
printf("%d\n", *(my_ptr + 21)); // => Напечатает кто-нибудь знает, что?
|
||||
// Скорей всего программа вылетит.
|
||||
|
||||
// Когда вы закончили работать с памятью, которую ранее выделили, вам необходимо
|
||||
@ -426,7 +426,7 @@ void function_1() {
|
||||
// Можно получить доступ к структуре и через указатель
|
||||
(*my_rec_ptr).width = 30;
|
||||
|
||||
// ... или ещё лучше: используйте оператор -> для лучшей читабельночти
|
||||
// ... или ещё лучше: используйте оператор -> для лучшей читабельности
|
||||
my_rec_ptr->height = 10; // то же что и "(*my_rec_ptr).height = 10;"
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user