Указатели. Рассмотрим такую задачу: в файле записаны целые числа
Рассмотрим такую задачу: в файле записаны целые числа. Надо отсортировать их и записать в другой файл. Проблема заключается в том, что заранее неизвестно, сколько в файле таких чисел. В такой ситуации есть два варианта:
1. Выделить память с запасом, если известно, например, что этих чисел гарантированно не
более 1000.
2. Использовать динамическое выделение памяти – сначала определить, сколько чисел в
массиве, а потом выделить ровно столько памяти, сколько нужно.
Наиболее грамотным решением является второй вариант (использование динамических массивов). Для этого надо сначала поближе познакомиться с указателями.
Указатель– это переменная, в которой хранится адрес другой переменной или участка памяти.Указатели являются одним из основных понятий языка Си. В такие переменные можно записывать адреса любых участков памяти, на чаще всего – адрес начального элемента динамического массива. Что же можно делать с указателями?
Итак, что надо знать про указатели:
• указатель – это переменная, в которой записан адрес другой переменной;
• при объявлении указателя надо указать тип переменных, на которых он будет указывать, а
перед именем поставить знак *;
• знак &перед именем переменной обозначает ее адрес;
• знак *перед указателем в рабочей части программы (не в объявлении) обозначает значение ячейки, на которую указывает указатель;
• нельзя записывать по указателю, который указывает непонятно куда – это вызывает сбой
программы, поскольку что-то стирается в памяти;
• для обозначения недействительного указателя используется константа NULL;
• при изменении значения указателя на nон в самом деле сдвигается к n-ому следующему числу данного типа, то есть для указателей на целые числа на n*sizeof(int)байт;
• указатель печатаются по формату %p.
Теперь вам должно быть понятно, что многие функции ввода типа scanfи fscanfв самом
деле принимают в параметрах адреса переменных, например
scanf ( "%d", &i);
Дата добавления: 2015-10-05; просмотров: 676;