LINUX.ORG.RU

Нубский вопрос про переменные

 , , ,


0

3

При создании некоторых переменных в C и C++ указываются * и &. Объясните пожалуйста, для чего и как этим пользоваться, ну на каком-нибудь примере. Или где можно про это почитать, но чтоб прям для тупых и безнадежных? И как правильно такое называется?

UPD: всем спасибо. Нет, я правда не троллил, такие уж у меня вопросы.



Последнее исправление: ozz_is_here (всего исправлений: 1)

ты дышать не забываешь?

Anoxemian ★★★★★
()

Тут только вдоль.^L

толсто

anonymous
()

В любой книжке по Си или Си++.

yoghurt ★★★★★
()
Ответ на: комментарий от Meyer

хо, а ещё ведь разыменование и взятие адреса. Он ведь не указал, в каком месте в объявлении переменной эти значки встречаются? =)

yoghurt ★★★★★
()
Ответ на: комментарий от yoghurt

хо, а ещё ведь разыменование
и взятие адреса.

О, забыл про это. Упомянул про & в сишке.

Meyer ★★★★★
()
Ответ на: комментарий от Meyer

C doesn't have references, так что & там - «взятие адреса».

Спасибо, почитаю про это.

У меня просто слегка странные методы освоения некоторых вещей.

ozz_is_here
() автор топика
Ответ на: комментарий от yoghurt

Да не, наркоманский. При чём даже по тем временам когда это создавалось. На клавиатуре уже были значки «@$%», но нет, надо одну и ту же конструкцию навестить с десяток контекстов, так что бы код обязательно нужно было парсить а не читать, ещё эти точки с запятыми дурные.

thunar ★★★★★
()
Последнее исправление: thunar (всего исправлений: 1)
Ответ на: комментарий от thunar

парсить а не читать

Какую информацию можно читать, но не анализировать?

Deleted
()

А это всё потому что в Си++ очень боятся вводить новые «слова». Вот и перегружают старые. И доходит иногда до весьма грустных ситуаций.

Deleted
()

Потом узнаешь, забей сейчас на это, если читаешь какую то книгу или типо того. Но вообще лучше всего обучаться делая какой то свой проект, ты вроде и хотел.

linuhs_user
()
Ответ на: комментарий от linuhs_user

Потом узнаешь, забей сейчас на это, если читаешь какую то книгу или типо того. Но вообще лучше всего обучаться делая какой то свой проект, ты вроде и хотел.

Точно, оптимальный подход: не зная что такое * и & в с/++, начинать делать проЕкт

MyTrooName ★★★★★
()
Последнее исправление: MyTrooName (всего исправлений: 1)
Ответ на: комментарий от MyTrooName

Вполне годных подход. И да, это слово пишется именно через «е».

anonymous
()
Ответ на: комментарий от thunar

То, что * — это и объявление указателя и разыменование полностью укладывается в систему того, как устроены объявления, по-другому бы не получилось.

int a; // напишешь a -- получишь int.
int *x; // напишешь x -- получишь int*
        // напишешь *x -- получишь int.
char *f(int); // напишешь *f(какой-нибудь int) -- получишь char.

Ссылки — немного другой разговор, но там попытки завести логику тоже были

int &b = a; // адрес b указывает на а.

Rvalue-ссылки — попытка показать, что это тоже ссылка, поэтому использует символ &.

Язык был бы намного нечитаемее, если бы в нём все значки имели смысл — посмотрите на хаскель/руст и программы на них :)

vzzo ★★★
()
Ответ на: комментарий от anonymous

Зачем мне всерьез отвечать на сообщение для даунов, написанное дебилом? Подумай головой? Сам вынудил, не обижайся.

rumgot ★★★★★
()
Последнее исправление: rumgot (всего исправлений: 1)
Ответ на: комментарий от anonymous

Еще хуже аноны болтуны, которые не фига не знают.

rumgot ★★★★★
()

Тебе нужно про стек прочитать, в книжках обычно как-то странно пишут про работу с указателями, не объясняя почему и для чего нужно. Сейчас, с повсеместным использованием динамических языков с лексическим захватом переменных тык вообще наверное сложно понять. Гугли stack + «function call» или русский эквивалент, тема то старая, тысячу раз переведена.

anonymous
()
Ответ на: комментарий от anonymous

Гугли stack + «function call» или русский эквивалент, тема то старая, тысячу раз переведена.

Спасибо большое

в книжках обычно как-то странно пишут про работу с указателями, не объясняя почему и для чего нужно

Всё, что я нагуглил, это «вот сейчас создадим переменную, сделаем указатель на неё, а вот еще такую прикольную вещь можно сделать».

ozz_is_here
() автор топика
Ответ на: комментарий от yoghurt

Да вполне нормальный синтаксис, это ж вам не раст какой-нибудь

В котором * применяется в основном для разыменования, но также и для определения указателя (хотя там синтаксис чуть сложнее), а & означает ссылку. Совсем как во вполне нормальном синтаксисе.

Virtuos86 ★★★★★
()
Ответ на: комментарий от thunar

Читаемость — это исключительно опыт. А опыта проще набираться с логично обоснованным синтаксисом, чем со случайным нагромождением 8 разных значков.

vzzo ★★★
()
Ответ на: комментарий от vzzo

И в чём же логичность использования знак арифметической операции для операции с адресами и типа данных? На клавиатуре, например, есть прекрасный знак @, который идеально бы лёг на это дело. Понятно, что сейчас уже это въёлось намертво, но чем изначально такой дурной выбор был обусловлен?

thunar ★★★★★
()
Последнее исправление: thunar (всего исправлений: 1)
Ответ на: комментарий от vzzo

Ну так это так и тащили до 17го стандарта. А, например, в том же фортране (куда как более консервативном) в своё время взяли и обновили синтаксис до читаемого.

Ну да там же пишут, что фигурные скобочки туда же?

thunar ★★★★★
()
Последнее исправление: thunar (всего исправлений: 2)
Ответ на: комментарий от vzzo

в момент создания Си @#$^ не считались всюду доступными символами.

Но вроде в Паскале в это же самое время появились указатели с @^ .

vodz ★★★★★
()
Ответ на: комментарий от vzzo

Язык был бы намного нечитаемее, если бы в нём все значки имели смысл — посмотрите на хаскель/руст и программы на них :)

Смотрю и вижу намного более читаемый код чем на C/C++/Go.

Nexmean
()
Ответ на: комментарий от thunar

И педон и сишка — говно? Лишп рулит?

anonymous
()

Сколько баттхерта с «читабельностью, смыслом и логичностью»! Вангую, что ни не только лишь все из отписавшихся смогут дать определения тем понятиям, которыми оперируют

Deleted
()

Или где можно про это почитать, но чтоб прям для тупых и безнадежных?

Любой учебник по с++ с самого начала.

Dudraug ★★★★★
()
Ответ на: комментарий от anonymous

А вот этот школьник не сможет объяснить, что такое «эмпирически»!

Deleted
()
Ответ на: комментарий от MyTrooName

Точно, оптимальный подход: не зная что такое * и & в с/++, начинать делать проЕкт

Не, ну свой проект сложновато будет так сразу. С пачтей можно начать. В ядро. Через недельку опыта наберется и уже можно будет свой проект начинать. Принципиально новый инит, например.

anonymous
()
Ответ на: комментарий от theNamelessOne

Ты гуглить не умеешь?

Рак - болезнь такая, она не может гуглить.

anonymous
()

UPD: всем спасибо. Нет, я правда не троллил, такие уж у меня вопросы.

Это не вопросы, а твой диагноз. Прописываю тебе раковать на ЛОРе ежедневно до забана. И еще аватарки почаще меняй, это даже ты осилишь. Приступай.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.