Menu
Coddy logo textTech

Объявление указателей

Часть раздела Logic & Flow путешествия по C на Coddy — урок 2 из 63.

Теперь, когда вы понимаете, что такое pointers, давайте научимся их создавать. Объявление переменной pointer следует определенному синтаксису, который указывает компилятору, на какой тип данных будет указывать pointer.

Базовый синтаксис для объявления pointer: data_type *pointer_name;

int *ptr;        // Объявляет указатель на целое число
char *ch_ptr;    // Объявляет указатель на символ
float *f_ptr;    // Объявляет указатель на число с плавающей точкой

Символ звездочки (*) — это то, что делает объявление объявлением pointer. Он сообщает компилятору, что эта переменная будет хранить address памяти, а не фактическое значение данных. Когда вы объявляете int *ptr;, вы говорите: «ptr — это pointer, который может хранить address переменной типа integer».

Хорошая практика — инициализировать указатели значением NULL, если они еще не указывают на допустимый адрес памяти. Это предотвращает их обращение к случайным областям памяти: int *ptr = NULL;

При выводе адресов указателей с помощью printf используйте спецификатор формата %p. Часто рекомендуется приводить указатель к типу (void *) для обеспечения совместимости и правильного форматирования: printf("%p", (void *)ptr);

Обратите внимание, что тип данных перед звездочкой указывает, на какой тип данных будет указывать pointer. Это важно, поскольку разные типы данных занимают разный объем памяти, и компилятору необходима эта информация для правильного управления памятью.

challenge icon

Задание

Легко
Напишите программу на C, которая демонстрирует правильный синтаксис объявления указателей. Ваша программа должна:
  1. Объявить указатель на int с именем int_ptr, инициализированный значением NULL
  2. Объявить указатель на char с именем char_ptr, инициализированный значением NULL
  3. Объявить указатель на float с именем float_ptr, инициализированный значением NULL
  4. Вывести адреса памяти, хранящиеся в каждом указателе, используя printf со спецификатором формата %p. При выводе приведите указатель к типу (void*) для обеспечения правильного форматирования, например: printf("Label: %p\n", (void*)ptr);

Ваш вывод должен отображать три адреса указателей в следующем формате:

Integer pointer: [address]
Character pointer: [address]  
Float pointer: [address]

Обратите внимание, что фактические адреса памяти будут отличаться, но формат и метки должны точно соответствовать показанным выше.

Попробуйте сами

#include <stdio.h>

int main() {
    // TODO: Объявите ваши указатели здесь
    
    
    // TODO: Выведите адреса указателей, используя требуемый формат
    
    
    return 0;
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Logic & Flow