Въведение в указатели в С

В C или други езици за програмиране имаме концепция за променлива. Тези променливи се използват за задържане на стойности в него Човек може да използва такива променливи по време на програмиране. Въпреки това има няколко задачи, които не изискват променливи, но изискват адреса на тези променливи. Адресът на променливите означава местоположението на паметта, действително там, където тези променливи съществуват. В тази тема ще научим за указатели в C. Можем да определим показалеца като вид променлива, която държи адреса на всяка друга променлива, която може да има някаква стойност

Използване на указатели в езиците за програмиране и C

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

Различни начини за достъп до променлив адрес в С

Нека се опитаме да разберем какви са различните начини, чрез които можем да отпечатаме адреса на променлива в C.

Има два начина, по които всъщност можем да отпечатаме адреса на променлива. Тези два метода са:

  1. Чрез използване на метода ampersand (&)
  2. С помощта на указател

Нека разгледаме всеки метод с пример

1. Използвайки метода ampersand (&)

В този метод ще използваме концепцията на ampersand за отпечатване на адреса на променлива

Нека да разгледаме това с пример

#include
int main () (
double varNumValue= 10.2;
char varTextValue(10) = “abc”;
printf("The address of variable varNumValue: %x\n", &varNumValue );
printf("varTextValue variable address is : %x\n", &varTextValue );
return 0;
)

Сега копирайте горния фрагмент на кода и го стартирайте

Той ще покаже следния изход:

The address of variable varNumValue: a0665a48
The address of variable varTextValue is : a0665a3e

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

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

2. С помощта на указател

Това е модерен подход за достъп до адреса на променлива. Преди да използвате указател, уведомете ни общия синтаксис на деклариране на указател

  • Общият синтаксис на деклариране на указател - Чест синтаксис, който използваме за деклариране на променлива, е:

data_type *variable

Това е често срещан начин за деклариране на всеки указател в C, тук data_type представлява типа на променливата, чийто адрес трябва да се съхранява. * означава, че декларираната променлива е указател. променлива се използва просто за достъп до стойността

Прост пример за това е:

double *var_text

След като обсъдихме концепцията на синтаксиса на General за деклариране на указател , кажете ни как можем да използваме показалец в програмирането

За да използвате указател на C, обикновено трябва да следвате следните три стъпки:

  • Дефиниране на променлива на показалеца
  • Присвояване на адреса на променливата, чийто адрес искаме да държим в променливата на показалеца
  • Сега, след като имаме променлива на указателя с адреса, можем отново да извлечем стойността на променливата от адреса, съхраняван в показалеца. Това може да стане с помощта на * в C. * е просто един от унарните оператори

Нека използваме горепосочените стъпки с пример и след това ще обясним този пример стъпка по стъпка

пример

#include
int main () (
int varNumValue = 10;
int *ipointervarNumValue;
ipointervarNumValue = &varNumValue;
printf("Address of the variable varNumValue is: %x\n", &varNumValue );
printf("Address stored in the variable ipointervarNumValue is: %x\n", ipointervarNumValue);
printf("Value of the variable *ipointervarNumValue is: %d\n", *ipointervarNumValue );
return 0;
)

Сега копирайте горния фрагмент на кода и го стартирайте

Той ще покаже следния изход:

Address of the variable varNumValue is: bf7b7f94
Address stored in the variable ipointervarNumValue is: bf7b7f94
Value of the variable *ipointervarNumValue is: 10

Сега, нека се опитаме да разберем горния пример

Линията int varNumValue = 10; просто декларира променлива със стойност 10

Вторият ред, който е ред до него: int * ipointervarNumValue; просто се декларира, за да съхранява адреса на променливата

Следващият фрагмент на код, който е: ipointervarNumValue = & varNumValue; се използва за задържане на адреса на променливата. Тук използваме концепцията за амперсанд, която обсъдихме по-рано в статията

Сега можем просто да получим стойността и да използваме указател в нашия кодов фрагмент

Сега, нека разгледаме различни видове указател в C

Видове показалец в С

В C. има различни видове показалец. Основните типове показалец, които обикновено се използват са:

  • NULL показалец
  • Висящ показалец
  • Родови указатели
  • Див показалец

Нека обясним всеки

1. Null Pointer: Null pointer е вид показалец, който не сочи към нищо. Обикновено сочи към базовия адрес на сегмента. В случай, че нищо не е присвоено на показалеца, то той има нулева стойност

Обикновено се използва в заглавни файлове като stdio.h, alloc.h

2. Dangler Pointer: Този тип показалец може да бъде създаден чрез изтриване на обекта без промяна на стойността на показалеца

3. Generic Pointer: Този тип указател се декларира с помощта на променлива от тип void. Тъй като е с невалиден тип данни, следователно той е посочен като общ указател. Този тип показалец не сочи никакви данни

4. Wild Pointer: Показалец, който не е инициализиран, е известен като див показалец. Този тип показалец се инициализира по време на изпълнение, когато човек трябва да го използва. Този тип показалец е известен като див показалец

заключение

Указателите в C се използват за насочване към адреса на променливата. Тези променливи се използват за динамично разпределение на паметта в C. Тези променливи се декларират със звездичка, така че да покажат, че променливата е указател. Те се използват в заглавния файл в програмирането.

Препоръчителни статии

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

  1. Какво е език за програмиране?
  2. C срещу C ++
  3. Модели в C програмирането
  4. Най-добрите компилатори на C
  5. Ръководство за указатели в C ++
  6. Показалци в C # с примери