Указатель

Материал из Неолурк, народный Lurkmore
Перейти к навигации Перейти к поиску

Указатель — особая единица, которая существует в некоторых грамотных ЯП.

Описание[править]

Широко известны указатели в языках C и им подобных, где они позволяют бдительно вгрызаться в непосредственно адресное пространство и использовать его особенности для низкоуровневой модификации данных. Также применяются и в некоторых прочих низкоуровневых языках программирования, в которых кодирувало вполне может самостоятельно управлять памятью.

В высокоуровневых языках программирования (таких как Perl, PHP, шипелка и др.) указатели отсутствуют, а вся работа с памятью производится полностью автоматически. Связано это с тем, что именно при работе с памятью сохраняется стабильно высокий шанс совершить ошибку. Зато производительность таких языков сильно меньше — автомат многое не учитывает.

Один хрен, что же такое указатель? Это банально переменная определённого типа, которая указывает на определённую ячейку оперативной памяти, в которой гнездится собственно переменная. За счёт указания типа указатель в состоянии понять, какой длины память должна зажужжать, чтобы вместить в себя такую переменную.

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

В общем, применение указателя требует ума.

Movax1010h.png Глубокий смысл скрыт в этих неестественных языках
Языки программированияПромышленные: BATC#CC++JavaJavaScript (AJAX) • PascalPerlPHPPythonRubyABAPАссемблерВасикFortran (Профессор)
Эзотерические: BrainFuckHQ9++ErlangForthHaskellLISP (My other car) • PrologTclΤΕΧOracleMySQLGolangВ++Scala
ПрофессииБыдлокодерПрограммистТестировщикХакерХеллоуворлдщикIT-звёздыПрограммист (существо)
Методы и стилиReverse EngineeringАнти-паттернВыстрелить себе в ногуГрязный хакКод (индусский) • КостыльМетод научного тыкаПомолясьСвистелки и перделкиОчередьСпортивное программированиеОбфускацияБета-тестАльфа-тестШаблоныRegReplaceФреймворкБыдлокодIndex.phpОхота за жукамиКуМирКлеточный автомат
Средства разработкиSublime TextПодсветка синтаксиса кодаUnstable DiffusionAPIPythonTutorCodeWarsDataCampUnity3DКнижный PythonMallocСвязный списокSOLIDООПУказательNULLWeLang++
ЛюдиИлья КанторЮрий КлючевскийЭдуард ЛаасЭдвард СноуденСеймур Пейперт
Прочее++i + ++iDeadline%s640 килобайтCMSDummy modeЕГГОГFoobarGod is real, unless explicitly declared as integerGOTOIfconfigKISSRegExpSICPsql.ruXyzzyДискетаИнжалид дежицеКОИ-8ЛогМанРекурсияСУБДТест ТьюрингаУмение разбираться в чужом кодеФаза ЛуныФатальный недостатокПроблема 2000ТаймстампКэшЗапись в файл без кэша (Perl)Танцы с бубномКодач