ПредишенСледващото

Преглед на ключовата терминология

Различни компютърни езици имат различни наименования за разказване на компилатор или интерпретатор сега ви интересува в този смисъл - аз се съсредоточавам върху по-долу C и C ++.

сценарий показалка

Да разгледаме С, което показва, показалеца, като нисш стр.

показалка и сочен

За да се обърнете към символите на стр точка, което търсим, стр използвате един от тези символи (отново за C):

Можете също да преместите курсора на данните, посочени от тях игра в движение:

Ако имате данни, които могат да бъдат записани, можете да направите следното:

Идентификация dereferencing и достъп до член на структурата на данните

В C, освен ако имате променлива, която е указател към структура с елементи от данни, можете да получите достъп до тези функции с помощта на оператора -> сочен:

типа Multi-байтове данни

За да използвате показалеца, компютърната програма също изисква някакво разбиране за вида на данните, които са упоменати - ако се изисква повече от един байт за този тип данни за представяне, а след това на индекса обикновено показва ниското байт в данните.

Така че, погледнете в по-сложен пример:

Указатели за динамично разпределени памет

В C ++, разпределението на памет обикновено се извършва от оператор, и нова версия чрез изтриване:

Виж. Това е и умни указатели C ++ по-долу.

показалеца често може да бъде единственият признак, който съхранява някои данни или буфер в паметта. Ако се изисква продължителна употреба на данни / буфер или способността да се обаждате безплатно () или изтриете. за да се избегне изтичане на памет, а след това на програмиста трябва да работи с копие на показалеца.

или да се планира внимателно премахване на всякакви промени.

В C ++, най-добре е да се използват смарт показалеца обекти за съхраняване на указатели и управление, автоматично ги освобождава като деструктори умни указатели работа. Тъй C ++ 11 стандартната библиотека осигурява две, unique_ptr. когато има един собственик на избрания обект.

нулеви указатели

В C и C ++, както и вграден числените типове не е задължително да имат стойност по подразбиране на 0 вместо bools да лъжа. показатели не винаги са равни на празно. Всички те се поставят в 0 / фалшива / NULL, ако те са статични или променливи (само C ++) пряко или непряко член променливи статични обекти или техните основи или тествани нула инициализация (например, нов T () и нов Т (х , Y, Z); работи при нула -initsializatsiya член T, включително указатели, докато нов Т; не).

По-точно, инициализира указатели да се запази малко-модел, който идентифицира или NULL. или (често виртуално).

Например, Int *. стартира правилно да сочи към променливата вътр а. може - след отливането да плаваш * - за достъп до стойност в «GPU» паметта, напълно различен от променлива INT на. и след това, след щракване на функцията на показалеца може да се отнася до отделна памет, съдържаща опкодовете за функцията.

3GL езици за програмиране като C и C ++, обикновено се скрие тази сложност, като:

Ако компилаторът дава указател към променлива или функция, можете да я играете свободно (толкова дълго, колкото на променливата е унищожена / освободен през това време), и този проблем е съставител, като, например. Необходимо е да се възстанови предварително определен регистър използвате отделен CPU или компютърни инструкции в командата

Опитите да се движат правните стрелките извън тези граници, или да присвоите цифри и знаци, използвани показатели, свързани с несвързани видове обикновено имат неопределен поведение. така че това трябва да се избягва в библиотеки и приложения по-високо ниво, но за кода за операционна система, драйвери на устройства, и т.н. Може да се наложи да разчита на поведението на ляво неопределени, използвайки C или C ++, която никога не е тяхното специфично оборудване са ясно дефинирани.

Сочените операция започва с показалеца и следва своята стрелка за да получите достъп индекса си. Целта може да бъде поглед върху състоянието на трамплин или промяна на статута на трамплин. операция показалка и сочен работи само ако показалецът е Pointee - точка следва да бъде разпределена и показалеца трябва да се настрои да се отбележи това. Най-често срещаната грешка в кода на показалеца на забравили да се създаде в рамките на елемента. Най-често, защото на този код за грешка е лоша работа и сочен. В Java неправилно сочен учтивост система по време на работа. В компилирани езици като C, C ++ и Pascal, Неправилно сочен Понякога се срива, а друг път спомена повреден по някакъв коварен, ежедневни начин. грешки показалеца в компилирани езици може да бъде трудно да се проследи заради това.

С прости думи, това означава, сочен за достъп до стойността на определено място на паметта, посочи от показалеца.

Въпреки това, ние можем да сочен показалеца без достъп до стойността, за които се посочва. Например:

Ние сочен нулев указател, без достъп до неговата цена. Или можем да направим:

Отново dereferenced, но никога не се отнася до стойността. Този код не ще се срине: Crash се случва, когато в действителност да получите достъп до данните е невалиден показалка. Въпреки това, за съжаление, според Standard сочен невалиден показалка е дефинирано (с някои изключения), дори и да не се опитват да се докоснат до доказателствата.

С една дума, сочен оператора на показалеца и сочен означава прилагане. Това твърдение просто връща L-стойност за бъдещата си употреба.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!