Объявление указателей
Часть раздела Logic & Flow путешествия по C на Coddy — урок 2 из 63.
Теперь, когда вы понимаете, что такое указатели, давайте узнаем, как их создавать. Объявление переменной-указателя следует определенному синтаксису, который сообщает компилятору, на какой тип данных будет указывать этот указатель.
Базовый синтаксис для объявления указателя: data_type *pointer_name;
int *ptr; // Объявляет указатель на целое число
char *ch_ptr; // Объявляет указатель на символ
float *f_ptr; // Объявляет указатель на число с плавающей точкойЗвездочка (*) — это то, что делает это объявлением указателя. Она сообщает компилятору, что эта переменная будет хранить адрес памяти, а не само значение данных. Когда вы объявляете int *ptr;, вы говорите: «ptr — это указатель, который может хранить адрес целочисленной переменной».
Обратите внимание, что тип данных перед звездочкой указывает на то, на какой тип данных будет указывать указатель. Это важно, так как разные типы данных занимают разный объем памяти, и компилятору необходима эта информация для правильного управления памятью.
Задание
ЛегкоНапишите программу на языке C, которая демонстрирует правильный синтаксис объявления указателей. Ваша программа должна:
- Объявить указатель на целое число с именем
int_ptr - Объявить указатель на символ с именем
char_ptr - Объявить указатель на число с плавающей точкой с именем
float_ptr - Вывести адреса памяти, хранящиеся в каждом указателе, используя
printfсо спецификатором формата%p
Ваш вывод должен отображать три адреса указателей в следующем формате:
Integer pointer: [address]
Character pointer: [address]
Float pointer: [address]Обратите внимание, что фактические адреса памяти будут различаться, но формат и метки должны точно соответствовать показанным выше.
Шпаргалка
Чтобы объявить переменную-указатель, используйте синтаксис: data_type *pointer_name;
int *ptr; // Объявляет указатель на целое число
char *ch_ptr; // Объявляет указатель на символ
float *f_ptr; // Объявляет указатель на число с плавающей точкойЗвездочка (*) делает это объявлением указателя, сообщая компилятору, что эта переменная будет хранить адрес памяти. Тип данных перед звездочкой указывает, на какой тип данных будет указывать указатель.
Используйте спецификатор формата %p с функцией printf для отображения адресов указателей.
Попробуйте сами
#include <stdio.h>
int main() {
// TODO: Объявите ваши указатели здесь
// TODO: Выведите адреса указателей, используя требуемый формат
return 0;
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Logic & Flow
1Основы указателей
Что такое указатель?Объявление указателейОператор взятия адреса (&)Оператор разыменования (*)Указатели NULLИтоги: Основы указателей4Проект: Простая текстовая утилита
Обзор проектаПодсчет символов2Указатели и массивы
Имена массивов как указателиЭлементы массива — указателиАрифметика указателейСравнение указателейИтоги: Обход массива через указатели5Указатели и функции
Передача по значениюПередача указателей в функцииИзменение переменных через указателиКлассический пример: SwapПередача массивов в функцииИтоги: указатели как аргументы функций8Структуры и указатели
Указатели на структурыОператор «стрелка» (->)Передача структур по значениюПередача указателей на структурыДинамическое выделение памяти для структурИтоги: Изменение структур через указатели11Итоговые задачи на повторение
Повторение: динамическая конкатенация строкПовторение: массив структурПовторение: счетчик частоты слов3Символьные массивы и строки
Строки как массивы charНуль-терминаторВвод строк с помощью scanfИспользование strlen()Использование strcpy()Использование strcat()Использование strcmp()Итоги: основные строковые функции