Розуміння Void-Указників
Коли ви вперше побачили void, це стосувалося функцій, які нічого не повертають. Не можна створити змінну типу void, але можна оголосити вказівник void*, який зберігає адресу будь-якого типу даних.
Якщо ви виконували вправи з вказівниками у цьому розділі, то знаєте, що всі вказівники займають 8 байтів. Вказівник void* не є винятком.
Вказівник void* не прив'язаний до жодного конкретного типу даних. Така гнучкість дозволяє зберігати в ньому адресу будь-якого типу даних. Однак є нюанс: не можна розіменовувати вказівник void*.
Це обмеження виникає з тієї ж причини, через яку не можна оголошувати змінні типу void. Виконайте явне перетворення типу!
Main.c
1234567891011121314151617181920#include <stdio.h> int main() { char c = 'F'; int i = 100; double d = 3.15; void* pV; pV = &c; printf("%c \n", *((char*)pV)); pV = &i; printf("%d \n", *((int*)pV)); pV = &d; printf("%.2f \n", *((double*)pV)); return 0; }
Вітаємо з завершенням основ програмування на C! Щоб рухатися далі, вивчайте такі теми, як макроси, алгоритми сортування та структури даних. Вивчення дистрибутива Linux також допоможе вам розвиватися як кваліфікованому програмісту на C.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Can you explain why you can't dereference a void pointer?
What are some common uses for void pointers in C?
Can you give examples of how to cast a void pointer to another type?
Awesome!
Completion rate improved to 2.63
Розуміння Void-Указників
Свайпніть щоб показати меню
Коли ви вперше побачили void, це стосувалося функцій, які нічого не повертають. Не можна створити змінну типу void, але можна оголосити вказівник void*, який зберігає адресу будь-якого типу даних.
Якщо ви виконували вправи з вказівниками у цьому розділі, то знаєте, що всі вказівники займають 8 байтів. Вказівник void* не є винятком.
Вказівник void* не прив'язаний до жодного конкретного типу даних. Така гнучкість дозволяє зберігати в ньому адресу будь-якого типу даних. Однак є нюанс: не можна розіменовувати вказівник void*.
Це обмеження виникає з тієї ж причини, через яку не можна оголошувати змінні типу void. Виконайте явне перетворення типу!
Main.c
1234567891011121314151617181920#include <stdio.h> int main() { char c = 'F'; int i = 100; double d = 3.15; void* pV; pV = &c; printf("%c \n", *((char*)pV)); pV = &i; printf("%d \n", *((int*)pV)); pV = &d; printf("%.2f \n", *((double*)pV)); return 0; }
Вітаємо з завершенням основ програмування на C! Щоб рухатися далі, вивчайте такі теми, як макроси, алгоритми сортування та структури даних. Вивчення дистрибутива Linux також допоможе вам розвиватися як кваліфікованому програмісту на C.
Дякуємо за ваш відгук!