Помогите разьяснить пару вопросов, сколько не читал книг так и не понял.
1)Объясните как работает ссылка * (просто насилует мой мозг)
2) как работае ссылка на ссылку ** (Это мой мозг просто разрывает на куски)
3) и зачем нужен cast const, я так понял это для того что бы менять значение. НО зачем, если оно константа то и должно быть не изменным. или я что-то недопонимаю?
Другие языки программирования и технологии
C++ помогите
про ссылки и адреса - тут объяснять долго, скачай книжку Кернигана-Ритчи по Си, там великолепно все разжевано.
про const_cast. В языке есть просто константы типа 21 или "привет", а есть переменные с аттрибутом const. Эти размещаются и передаются как обычные переменные, но словечко говорит, что разработчик считает, что переменная не будет меняться вообще или в данном месте. По идее при идеальном программировании так и было бы, но в реальности бывает иногда нужно или менять такие переменные, или передать в адрес в функцию, которая написана без const, то есть - не обещает, что не поменяет ничего.
В итоге если нельзя, но хочется - то можно, но неудобно.
Язык позволяет сделать постоянную переменной - но для этого программист должен сам явно написать const_cast, то есть сказать компилятору типа "я знаю, что это делаю, это не случайная ошибка) .
обычный пример - когда есть в классе какая-то переменная или строка, которая должна однажды быть посчитана, а потом оставаться константой.
ее объявляют const, но в начале один раз рассчитывают и присваивают - и тут нужно уметь присваивать ей.
а еще чаще - когда используют несколько библиотек от разных авторов и кто-то const поставил, а кто-то - нет, ну не лезть же править чужие коды!
про const_cast. В языке есть просто константы типа 21 или "привет", а есть переменные с аттрибутом const. Эти размещаются и передаются как обычные переменные, но словечко говорит, что разработчик считает, что переменная не будет меняться вообще или в данном месте. По идее при идеальном программировании так и было бы, но в реальности бывает иногда нужно или менять такие переменные, или передать в адрес в функцию, которая написана без const, то есть - не обещает, что не поменяет ничего.
В итоге если нельзя, но хочется - то можно, но неудобно.
Язык позволяет сделать постоянную переменной - но для этого программист должен сам явно написать const_cast, то есть сказать компилятору типа "я знаю, что это делаю, это не случайная ошибка) .
обычный пример - когда есть в классе какая-то переменная или строка, которая должна однажды быть посчитана, а потом оставаться константой.
ее объявляют const, но в начале один раз рассчитывают и присваивают - и тут нужно уметь присваивать ей.
а еще чаще - когда используют несколько библиотек от разных авторов и кто-то const поставил, а кто-то - нет, ну не лезть же править чужие коды!
Звездочка - не ссылка, а операция разыменования. Ссылка обозначается как & (впрочем, этот знак используется и иначе) . C++ не рассчитан на начинающих изучать программирование, да и вообще далеко не на всякий мозг. .
1) Программа хранит значения в оперативной памяти. Ссылка- это адрес на участок памяти.
2) если записать ссылку в переменную, то программа будет хранить её значение в, не поверишь, оперативной памяти. Ничего отличающегося от описанного в п. 1 не происходит.
ps как не сложно догадаться, сделано это не просто так. Если знать размерность переменной, по ссылке можно получить её значение. Зачастую это более грамотно и менее ресурсоемко чем просто передавать значение переменной.
2) если записать ссылку в переменную, то программа будет хранить её значение в, не поверишь, оперативной памяти. Ничего отличающегося от описанного в п. 1 не происходит.
ps как не сложно догадаться, сделано это не просто так. Если знать размерность переменной, по ссылке можно получить её значение. Зачастую это более грамотно и менее ресурсоемко чем просто передавать значение переменной.
Похожие вопросы
- C++ помогите начинающему ?
- Перевести C++ => C# Помогите пожалуйста!
- Связь Питона и C#. Помогите
- dev c++. помогите плз сделать задачу найти наибольшую высоту треугольника из сторонами a,b,c
- НОК 2-ух чисел - C++ Помогите, люди добрые. Как написать прогу на C++, которая вычисляет НОК двух чисел
- Что такое return в c# помогите
- C++ помогите пожалуйста! Без вашей помощи никак не получается
- Программисты C#, помогите. задачка элементарная
- C# Помогите со StreamReader и StreamWriter, ситуация жуть!
- программирование C++. Помогите найти ошибку
Я не понимаю как их правильно исспользовать.
int M = *int[] - Вот например это как понимать? - то что в результате будет безразмерный одномерный массив это я уже знаю. но как это расстолковать как это срабатывает не могу врубиться...