КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Работа с файлами
Указатель на функцию Время жизни и область видимости переменных В языках С / С++, как и в большинстве остальных ЯВУ есть три класса переменных. 1. Статические. Статическими являются переменные, объявленные вне какой-либо функции, а также объявленные внутри функций и классов с использованием служебного слова static. Такие переменные создаются при запуске программы, уничтожаются при её завершении и доступны из любой функции программы. 2. Автоматические. Это все переменные, объявленные внутри какой-либо функции (кроме объявленных с использованием слова static). Такие переменные создаются при их объявлении и уничтожаются при выходе за пределы операторных скобок фрагмента программы, в котором они определены. Эти переменные размещаются в стеке. Поэтому максимальный размер всех автоматических переменных ограничен размером выделенного стека, на это следует обращать внимание при создании больших автоматический массивов. 3. Динамические. Это переменные, созданные с помощью специальных функций (malloc, calloc и др.) или операций (new, new[]). Временем жизни таких переменных управляет программист. Область видимости определяется доступностью указателей. Такие переменные расположены как правило в «куче» (heap). В Ms Windows при завершении приложения все динамические переменные также уничтожаются в связи с уничтожением кучи, связанной с данным приложением. Пример (С++). int main() { char a = 5; … { int b = a + 5; //здесь a существует и доступно … } //уничтожена переменная b short c; c = a + b; // ошибка, т.к. b уже не существует for(int i = 0;i<10;i++) {…} c = i; //ошибка, i существует только в теле цикла for int i=0; //переменная может быть объявлена, т.к. i объявленная выше уже не существует for(;i<10;i++) {…} c = i; //допустимо, т.к. i объявлено в этом же блоке i = 10; { int i = 3; //допустимо, перекрывает видимость i, объявленной ранее … } // здесь i=10; } //уничтожены переменные a,c,i Указатель на функцию используется для передачи точки входа в функцию другой функции в качестве аргумента. тип_функции (*имя_указателя) (спецификация параметров) пример: void qsort(void *base, size_t nelem, size_t width, int (*fcmp)(const void *p1, const void *p2); вызов: fcmp(p1,p2); функция сравнения чисел: int comp(const void *p1, const void *p2) { return *(int*)p1 - *(int*)p2; } Для взаимодействия с файлами предназначена структура данных FILE. Данная структура хранит служебную информацию об открытых файлах, такую как права доступа, указатель на файловый буфер, положение курсора в файле и т.д. Для работы с файлом его необходимо открыть, для этого предназначена функция FILE *fopen(const char *filename,const char *mode); filename – абсолютное или относительное имя файла, mode – режим открытия и доступа. Режимы: "r" – открытие существующего файла только для чтения (файл должен существовать); "w" – создание пустого файла для записи; "a" – открытие существующего файла для записи данных в конец файла; создание файла, если файла с заданным именем не существует; "r+" – открытие существующего файла для чтения и записи (файл должен существовать); "w+" – создание нового файла для чтения и записи; "a+" – тоже, что “a”, но с возможностью чтения; С каждым файлом связан файловый курсор, указывающий, с какой позиции файла будет совершено чтение или произведена запись. При чтении / записи данных курсор автоматически сдвигается на соответствующе количество данных. Что-то про потоки Другие функции работы с файлами: int fclose(FILE *stream); // закрывает файл, возвращает 0 в случае успеха int _fcloseall(void); //закрывает все открытые файлы, возвращает количество закрытых файлов int fflush(FILE *stream); // сброс файлового буфера в файл int feof(FILE *stream); // возвращает 1, если достигнут конец файла int fgetc(FILE *stream); // читает символ с позиции курсора из файла int fgetpos(FILE *stream, fpos_t *pos); // возвращает смещение курсора int fputc(int c, FILE *stream); // помещает символ в файл int fseek(FILE *stream, long offset, int origin); // смещает курсор в заданную позицию long ftell(FILE *stream); // ЧТО ЭТО ТАКОЕ??? Существуют стандартные файлы (потоки) (тип данных – FILE*): stdin – стандартный поток ввода (по умолчанию – клавиатура); stdout – стандартный поток вывода (по умолчанию – монитор в текстовом режиме); stderr – стандартный поток ошибок; stdaux – стандартный вспомогательный поток; stdprn – стандартный принтер. Данные потоки могут быть переопределены с использованием функции fopen.
Дата добавления: 2014-01-05; Просмотров: 281; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |