Язык программирования C/С++
13.07 · ред.
"СобеЗ C++" 🚀 Часть 1
В этой рубрике мы будем разбирать как легкие, так и сложные вопросы по C++, для джунов, мидлов и даже сеньоров 😅
Поехали!
🆙Explain auto Type Deduction 🤔
⛔️Найди ERROR⛔️
Автоматическое выведение типа (auto) позволяет компилятору самостоятельно определить тип переменной на основе её инициализации.
➡️ int* ip; auto aip = ip; ✅Мы объявляем переменную ip как указатель на целое число (ip - это обычный указатель на целое число), а затем присваиваем её значение переменной aip с использованием auto, компилятор выводит тип aip как указатель на целое число 🧩
➡️ const int* cip; auto acip = cip; ✅ cip - это указатель на константное целое число, что означает, что мы не можем изменить значение, на которое он указывает, но можем изменить адрес памяти, на который он указывает. acip - это еще один автоматически определённый указатель, который указывает на константное целое число 🛡
➡️ const int* const cicp = ip; auto acicp = cicp; ✅ cicp - это константный указатель на целое число, который указывает на тот же адрес, что и ip. acicp указывает на константное целое число, но константность указателя игнорируется. ‼️Когда мы присваиваем значение cicp переменной acicp с использованием auto, константность указателя игнорируется. Это происходит потому, что auto не учитывает квалификаторы типа, такие как const, при выводе типа переменной. В результате acicp становится обычным указателем на константное целое число, и константность указателя не сохраняется 🔄
➡️ auto&& uref1 = x; auto&& uref2 = cx; auto&& uref3 = 27; ✅ Когда мы объявляем uref1 как auto&& и присваиваем ей значение переменной x, компилятор выводит тип uref1 как ссылку на целое число, потому что x является lvalue. С другой стороны, когда мы присваиваем uref3 значение 27, которое является rvalue, тип uref3 выводится как rvalue ссылка на целое число 🔄
⚠️ Lvalue (locator value) представляет собой объект, который занимает идентифицируемое место в памяти и имеет адрес. Например, переменная, которая хранит значение, является lvalue, потому что она имеет определенное место в памяти и может быть идентифицирована по своему адресу. Lvalue можно изменить и присвоить новое значение 🗂
⚠️ Rvalue (right-value) - это выражение, которое не представляет собой объект, занимающий идентифицируемое место в памяти. Rvalue обычно является временным результатом выражения и не имеет определенного адреса в памяти. Rvalue не может быть изменено напрямую, и ему нельзя присвоить новое значение ✨
‼️ В нашем случае x является lvalue, потому что это переменная, которая имеет адрес в памяти и может быть изменена. С другой стороны, 27 является rvalue, потому что это временное значение, которое не имеет определенного адреса в памяти и не может быть изменено напрямую 🔍
#код #собез #интервью #программирование #С #auto #айти #ит #вопросответ #память #memory #windows #джунеще контент в этом сообществе
еще контент в этом соообществе
Язык программирования C/С++
13.07 · ред.
войдите, чтобы увидеть
и подписаться на интересных профи