![]() Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Область видимости переменных и других идентификаторов в языке Си. Время жизни.
Ответ: Время жизни - интервал времени выполнения программы, в течение которого программный объект (переменная или функция) существует. Время жизни переменной (глобальной илилокальной) определяется по следующим правилам: · Переменная, объявленная глобально (т.е. вне всех блоков), существует на протяжении всего времени выполнения программы. · Локальные переменные (объявленные внутри блока) существуют: o На период выполнения блока – если объявлены с классом памяти register или auto; o На период выполнения всей программы – если объявлены с классом памяти static или extern.
Область видимости и время жизни имён. · Глобальное (статическое) o Время жизни объекта совпадает с временем жизни программы o Размещены вне функций o Всегда инициализируются (автоматически – нулем) o Создаются до старта программы · Динамическое o Время жизни объекта управляется пользователем. o Позволяют использовать все доступное адресное пространство. o Создаются и удаляются при помощи библиотечных функций (C) или предопределенных команд (C++). o Время жизни – от создания до удаления. · Локальное (стековое, автоматическое) o По умолчанию время жизни объекта ограничено областью видимости. o Размещаются в стеке при входе в блок, при выходе из блока память освобождается. · Временное. o Время жизни объекта ограничено точкой применения. o Как правило, используются для передачи параметров в подпрограмму. o Размещаются в стеке. o Время жизни – до окончания функции. Структурные единицы программы на языке Си и соответствующие им области видимости.
Символьный тип данных в языке Си. Строковый тип данных. Строковые переменные и константы. Двойственный характер строк. Примеры. Ответ: Символьный тип- хранит код символа и используется для отображения символов в различных кодировках. Символьные данные задаются в кодах и по сути представляют собой целочисленные значения. Для хранения кодов символов в языке Си используется тип char. Задавать значение символьного типа можно как целочисленной константой, так и ASCII-символом в одинарных кавычках: chara, b; a = 75; b = 'K'; При выводе символов на экран (или в текстовый файл) все переменные типа char трактуются как беззнаковые целые числа в диапазоне 0..255 (unsigned char). Поумолчанию «char» = «signedchar» (дляMSVisualC/C++). Использование типа char по умолчанию (signed / unsigned)может быть изменено, например, в параметрах компиляции. В языке Си отсутствует специализированный строковый тип Строка хранится в массиве типа char: char str[20]; Конец строки определяется нуль-символом. Строка задается последовательностью символов, заключенных в кавычки"": char str[30] = "Так хранится строка впамяти"; Максимальная длина строки равна длине массива (минус 1 на нуль-символ). Определение строк в программе. #defineLINESTR 50 #degine NUMROWS 3; char string1[LINESTR]; char string_n[LINESTR] = “asd”; // избыточныеэлементы = 0 char string2[] = “My first string”; char *string_ptr = “My second string\n”; char string_c[] = {‘M’, ‘y’, ‘ ‘, ‘f’, ‘i’, ‘r’, ‘s’, ‘t’}; char *string_array[NUMROWS] = { “First row”, “Second row another length”, “Third row” }; char *name; // опасно! память не выделяется! Символьная константа — это буква, цифра, знак пунктуации или специальный символ, заключенный в апострофы Значение символьной константы равно коду представляемого ею символа. Символьные константы имеют тип int и при преобразовании типов дополняются знаком Примеры: 'T' '\n' '\08' 'sdf' E Строковая константа (литерал) –последовательность символов, заключенная вкавычки. Строковая константа может содержать печатные и управляющие символы. Строка хранится в памяти с добавлением символа '\0', означающего "конец строки". Строка имеет тип char[] (строку символов). Примеры: "School N 2" // 11 байтов "XUS sjhdkasdh" // 14 байтов ПРО ДВОЙСТВЕННЫЙ ХАРАКТЕР СТРОК Понятие рекурсии. Механизм рекурсии. Пример рекурсивной функции. Ответ: Рекурсия - способ вызова, при котором функция обращается к самой себе. Основное преимущество – использование для более простого создания версии некоторых алгоритмов по сравнению с итеративными эквивалентами.
Механизм рекурсии.
Возможные проблемы: · Самая распространенная ошибка при организации рекурсии – бесконечная последовательность "само- вызовов". · При написании рекурсивной функции необходимо начинать с организация выхода! · При большой глубине рекурсии возможно переполнение стека. На этапе отладки целесообразно использовать printf(...)для вывода отладочной информации о текущем шаге: int fac(int n) { printf("Function fuc(), n=%d\n", n); if (n==0) return 1; n = n*fac(n-1); printf("Function fuc(), n=%d\n", n); return n; } Рекурсия. · Любой алгоритм, представленный в виде функции врекурсивной форме с одним вызовом самой себя, может бытьлегко представлен в итерационной форме (и наоборот). · Не имеют простого нерекурсивного аналога подпрограммы, вызывающие себя два и более раз. В этом случае множество вызываемых подпрограмм образует не цепочку, а дерево вызовов. · Примеры задач, для которых рекурсия будет наиболее простым и естественным способом решения: поиск в по дереву, обход графа, быстрые сортировки и др. Рекомендации: · Свести исходную задачу к одной или нескольким подзадачам, из решения которых можно построить решение исходной задачи. · Считая, что функция правильно решает любые подзадачи, для решения этих подзадач следует рекурсивно обратиться к нашей же функции и из ответов подзадач построить ответ для исходной задачи. · Явный ответ надо давать, когда исходная задача уже не сводится к подзадачам. |
|||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2018-04-12; просмотров: 929. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |