Что выведет программа?
#include <iostream>
using namespace std;
void fun(int& a, int b)
{
a += 2;
b += 1;
}
int main()
{
int x = 10, y = 2;
fun(x, y);
cout << x << " " << y << " ";
fun(x, y);
cout << x << " " << y;
return 0;
}
#include <iostream>
using namespace std;
void fun(int& a, int b)
{
a += 2;
b += 1;
}
int main()
{
int x = 10, y = 2;
fun(x, y);
cout << x << " " << y << " ";
fun(x, y);
cout << x << " " << y;
return 0;
}
Рассмотрим некоторые темы программирования на Си уровня advanced.
http://pfacka.binaryparadise.com/articles/guide-to-advanced-programming-in-C.html
http://pfacka.binaryparadise.com/articles/guide-to-advanced-programming-in-C.html
Читаете it-литературу, блоги на каком-то иностранном языке?
Что не является принципом ООП?
Anonymous Poll
11%
Абстрагирование
3%
Инкапсуляция
83%
Многопоточность
2%
Наследование
2%
Полиморфизм
Найдите проблему в коде:
#include<stdio.h>
int main() { int *p = (int *)malloc(sizeof(int)); p = NULL; free(p); }
#include<stdio.h>
int main() { int *p = (int *)malloc(sizeof(int)); p = NULL; free(p); }
Anonymous Poll
31%
free() нельзя применить к NULL-pointer
51%
Утечка памяти
18%
Висячий указатель
free() можно спокойно применить к NULL-pointer. В данном случае проблемой является утечка памяти. Сначала надо вызвать функцию free() на поинтер, а потом присвоить ему значение NULL.
Правильная последовательность:
free(p);
p = NULL;
Правильная последовательность:
free(p);
p = NULL;
В каком сегменте памяти находятся i, j и *k?
int i; int main() { int j; int *k = (int*)malloc(sizeof(int)); }
int i; int main() { int j; int *k = (int*)malloc(sizeof(int)); }
Anonymous Poll
8%
i, j, *k находятся в стеке.
24%
i, j – стек, *k – куча.
63%
i – BSS, j – стек, *k – куча.
5%
j – BSS, i – стек, *k – куча.
Разбираемся в ООП-дизайне, чтобы управлять сложностью проектов:
https://web.archive.org/web/20120102190219/http://www.accu.informika.ru/acornsig/public/articles/ood_intro.html
https://web.archive.org/web/20120102190219/http://www.accu.informika.ru/acornsig/public/articles/ood_intro.html
Если вы хотите создать свой проект, то можете черпать вдохновение из данного источника.
Сайт содержит множество проектов на C/C++ (без ошибок и очепяток)
https://www.codewithc.com/c-projects-with-source-code/
Сайт содержит множество проектов на C/C++ (без ошибок и очепяток)
https://www.codewithc.com/c-projects-with-source-code/
Что выведет программа?
#include <stdio.h>
#include <stdlib.h> int main(int argc, char *argv[]) { char temp[20]; gcvt(23.45, 3, temp); printf("%s", temp); return 0; }
#include <stdio.h>
#include <stdlib.h> int main(int argc, char *argv[]) { char temp[20]; gcvt(23.45, 3, temp); printf("%s", temp); return 0; }
Anonymous Poll
9%
0
19%
23.5
23%
23.45000
49%
23.4
Правильный ответ: 23.4
Функция gcvt() превращает число с плавающей точкой в строку. Тройка в аргументе означает, что нужно конвертировать первые три цифры.
Функция gcvt() превращает число с плавающей точкой в строку. Тройка в аргументе означает, что нужно конвертировать первые три цифры.
Так как в С++ нет ключевого слова **interface**, как можно реализовать интерфейсы?
Anonymous Poll
4%
Их нельзя реализовать
5%
Можно реализовать с помощью volatile и explicit
3%
Нужно использовать префикс “I” в названии метода
76%
Можно реализовать с помощью виртуальных функций
10%
В новой версии С++ есть интерфейсы
2%
Импортировать из Java
Правильный ответ не включен в список вариантов.
Интерфейсы можно реализовать с помощью чисто виртуальных функций.
Они специфицирутся тем, что в декларации такой функции присутствует модификатор virtual и "= 0”.
#пример:
Интерфейсы можно реализовать с помощью чисто виртуальных функций.
Они специфицирутся тем, что в декларации такой функции присутствует модификатор virtual и "= 0”.
#пример:
class Box {
public:
// pure virtual function
virtual double getVolume() = 0;
private:
double length; // Length of a box
double breadth; // Breadth of a box
double height; // Height of a box
};
Как найти и отпринтить узлы, у которых нет братьев и сестёр?Помимо имплементации на С++, статья содержит псевдокод, поэтому вы сами можете потренироваться и реализовать поиск.
https://teletype.in/@heisenbug/HkxENxDqr
https://teletype.in/@heisenbug/HkxENxDqr
Teletype
Print All Nodes that don't have Sibling
Problem Statement:
Что выведет программа?
#include <iostream> int main(int argc, const char * argv[]) { int a[] = {1, 2, 3, 4, 5, 6}; std::cout << (1 + 3)[a] - a[0] + (a + 1)[2]; }
#include <iostream> int main(int argc, const char * argv[]) { int a[] = {1, 2, 3, 4, 5, 6}; std::cout << (1 + 3)[a] - a[0] + (a + 1)[2]; }
Anonymous Poll
3%
2
6%
4
10%
6
74%
8
7%
10
Правильный ответ: 8
(1+3)[a] – это то же, что и a[1+3]==5
a[0]==1
(a+1)[2] можно записать в виде a[3]==4
В итоге:
5-1+4=8
(1+3)[a] – это то же, что и a[1+3]==5
a[0]==1
(a+1)[2] можно записать в виде a[3]==4
В итоге:
5-1+4=8
Что хранит в себе vtable?
Anonymous Poll
11%
Таблицу данных.
83%
Адреса виртуальных функций.
7%
Данные виртуального окружения.
Что хранит в себе vtable?
Адреса виртуальных функций.
Всякий раз, когда в программе объявляется виртуальная функция, создается координирующая таблица vtable. Она хранит адреса виртуальных функций.
Адреса виртуальных функций.
Всякий раз, когда в программе объявляется виртуальная функция, создается координирующая таблица vtable. Она хранит адреса виртуальных функций.
Какими бывают виды специализации шаблона?
Anonymous Poll
72%
Полная и частичная.
16%
Строго и частично фиксированная.
13%
Мультипоточная и итерационная.