Вступ до покажчиків на С

У 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

Після обговорення концепції загального синтаксису оголошення вказівника дайте нам знати, як ми можемо використовувати вказівник у програмуванні

Щоб використовувати вказівник на 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; використовується для утримання адреси змінної. Тут ми використовуємо поняття ampersand, про яке ми говорили раніше у статті

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

Тепер розглянемо різні типи покажчика на С

Типи покажчика на С

Існують різні типи вказівника на C. Основними типами вказівника, які зазвичай використовуються, є:

  • Вказівник NULL
  • Повісний покажчик
  • Загальні покажчики
  • Дикий вказівник

Пояснимо кожен

1. Нульовий покажчик: Нульовий покажчик - це тип вказівника, який не вказує ні на що. Зазвичай він вказує на базову адресу сегмента. Якщо вказівник нічого не призначається, він має нульове значення

Зазвичай він використовується у файлах заголовків, таких як stdio.h, alloc.h

2. Вказівник Dangler: Цей тип покажчика можна створити, видаливши об'єкт, не змінюючи значення вказівника

3. Загальний покажчик: Цей тип покажчика оголошується за допомогою змінної типу void. Оскільки це недійсний тип даних, то його називають загальним покажчиком. Цей тип покажчика не вказує на жодні дані

4. Дикий вказівник: вказівник, який не був ініціалізований, відомий як дикий вказівник. Цей тип покажчика ініціалізується під час виконання, коли потрібно використовувати його. Цей тип покажчика відомий як дикий покажчик

Висновок

Покажчики на C використовуються для вказівки на адресу змінної. Ці змінні використовуються для динамічного розподілу пам'яті в C. Ці змінні оголошуються зірочкою, щоб показати, що змінна є покажчиком. Вони використовуються в заголовковому файлі в програмуванні.

Рекомендовані статті

Це посібник щодо покажчиків у C. Тут ми обговорюємо різні типи та способи використання покажчиків на С із методами та прикладами. Ви також можете переглянути наступні статті, щоб дізнатися більше -

  1. Що таке мова програмування?
  2. C проти C ++
  3. Шаблони в програмуванні на С
  4. Кращі компілятори C
  5. Посібник з покажчиків на C ++
  6. Покажчики в C # з прикладами