1. Въведението

C е много мощен език за програмиране, който се използва от много разработчици на софтуер за разработване на различни видове софтуер. Въпреки това, за начинаещ, C е доста труден за разбиране език. Голяма част от трудностите при изучаването на C идват от объркването около концепцията за указатели. В тази статия ще обясня концепцията на указателите с помощта на някои кодови фрагменти.

2. Указатели, адреси и променливи

Указателят е променлива, която съдържа адрес на паметта.

Важно е да се прави разлика между указател, адресът, който указателят държи, и стойността на адреса, държан от указателя. Това е източникът на голяма част от объркването относно указателите. Ще илюстрираме това в следните кодови фрагменти:

int nVariable = 5;

int *pPointer =

Първият израз декларира променлива „nVariable“ от тип integer и й присвоява стойност 5.

Вторият израз декларира променлива-указател, която съдържа адреса на цяло число, и присвоява адреса на променливата „nVariable“ към него.

Така че нека си представим, че паметта е набор от шкафчета. Всяко от тези шкафчета има номер на шкафче, присвоен му за целите на идентификацията. Първият оператор ще направи нещо като запазване на номера на шкафчето „1234“ и ще постави стойността „5“ в това шкафче. Вторият оператор ще направи нещо като запазване на номера на шкафчето „4321“ и след това ще постави стойността „1234“ в шкафчето. Така номерът на шкафчето „4321“ всъщност съхранява номера на шкафчето, което съхранява стойността „5“.

3. Индиректност

Терминът „ненасоченост“ се отнася до метода за достъп до стойността на адреса, държан от указател.

Индиректният оператор (*) се нарича още оператор за дереференция. Следните кодови фрагменти в C++ трябва да илюстрират този метод:

int nVariable = 5;

int *pPointer =

printf(“Изходът е %d”, *pPointer);

Резултатът от кодовите фрагменти ще бъде числото „5“. Не забравяйте, че “pPointer” е променлива указател, която съдържа адреса на променливата “nVariable”. Забележете, че използваме „*pPointer“, за да оценим стойността, задържана от променливата „nVariable“, и това е, което наричаме „Indirection“.

4. Заключението

Тази статия има за цел да предостави просто ръководство за разбиране на концепцията за указатели, адреси и променливи в C. Предполага се, че читателите имат някои основни познания в C.