без перевода :: geek :: geek (Прикольные гаджеты. Научный, инженерный и айтишный юмор)

geek без перевода 
geek,Прикольные гаджеты. Научный, инженерный и  айтишный юмор,без перевода,geek
Подробнее

geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор,без перевода,geek
Еще на тему
Развернуть
объяви глобальную
Обьявил себя глобальной переменной, саванна сколлапсировала к хуям.
inoy inoy 19.03.202114:07 ответить ссылка 6.9
объяви локальную static и передай из зоны видимости ее адрес
Или просто создать указатель на переменную.
"просто указатель" не сработает если переменная физически перестает существовать за пределами зоны видимости (например, если она создается в стеке). Static нужен для того чтобы гарантировать ее сохранение.
Переменная по указателю создается не на стеку, а на куче. Хоть сам указатель и лежит на стеку. Указатель можно либо вернуть из функции, либо передать в аргументы функции, если там есть ссылка, и тогда эта переменная станет доступна снаружи.
Ты только что описал не "создать указатель на локальную переменную", а "выделить память и передать указатель на нее". Улавливаешь разницу?
А, я чет забыл, что речь идёт о локальной переменной.
Но можно ли тогда static переменную называть локальной? Она ведь тоже не на стеку выделяется.
Static? Да, потому что она имеет именно что локальную зону видимости. Просто сохраняется после использования.

Впрочем, мой вариант, с точки зрения синтаксиса языка, на зону видимости никак не влияет, так что, строго говоря, к теме пста тоже отношения не имеет. Чтоб он влиял на зону видимости - нужно добавить в него еще один костыль в виде #define который заменит имя переменной на обращение к ней по адресу. ЕМНИП, дефайн работает "отсюда и далее", так что если описать его в самом конце зоны видимости, после последнего обращения к переменной, то он не будет с ней конфликтовать. И такой вариант не будет читтерством )
Ну и соответственно динамическая память, созданная через new, не перестает существовать, выйдя за границы стека, потому что выделяется не на стеку. Вот пример на C++:

void foo(int*& a) {
a = new int();
}
Объявляю глобальную переменную!
В джаве глобальных переменных техничестки нет.
gwarlock gwarlock 19.03.202113:50 ответить ссылка 0.0
C# со своим out расширяет границы (и не только их)
out просто передает значение по ссылке, область видимости переменной не изменится - получатся две переменные, каждая со своей областью
Шарпы не трогал давно, но похоже что ты путаешь out с ref. Но в любом случае это позволяет менять значение переменной за пределами стека вызова
Цитирую доку:
The out keyword causes arguments to be passed by reference. [...] It is like the ref keyword, except that ref requires that the variable be initialized before it is passed.
Так что это одно и то же. Да и в целом компилятор не обязан помещать переменные в стек - это же не C/C++, где при доступе за областью видимости будет UB или segfault. Так что это нормально - пусть значение живет отдельно от переменных, пока счетчик ссылок не обнулится или ее не съест сборщик мусора.
PHPшники шутку не оценили
Fukishi Fukishi 19.03.202114:54 ответить ссылка 0.1
PHP против социального неравенства среди переменных.
Тем временем в мире JS:
when someone uses var instead of let
peace was never an optio
Mohave Mohave 19.03.202115:05 ответить ссылка -0.4
в js есть замыкание и доступен внешний скоуп
Voranto Voranto 19.03.202115:15 ответить ссылка -0.5
никто не любит JS :(
JS - Новый PHP
Ну почему не любит? JS - это классный язык, если используется TS.
Mohave Mohave 19.03.202122:29 ответить ссылка 0.7
На всякий случай призываю к кэпу.
Один львенок из африки сломал сегмент стека, и понеслось.
Только зарегистрированные и активированные пользователи могут добавлять комментарии.
Похожие темы

Похожие посты
л
fould
l Ко ;
you like
1___« When after years of Dev-Ops, someone asks you what you have been doing for all that time. UHATavES PEOPLE
FEiUNcs of Power
nONiY
STATUS
USING THE TERMINAL IN FRONT OF
NON-PROGRAMMERS Pyton developer: what the fuck is this ? (4
Working in IT is not stressing at all”
Dave - 28 years old