Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Примитивные типы данных в Си.Содержание книги
Похожие статьи вашей тематики
Поиск на нашем сайте
В языке Си предусмотрено несколько основных типов объектов: Символьный. Объекты, описанные как символы (char), достаточно велики, чтобы хранить любой член из соответствующего данной реализации внутреннего набора символов, и если действительный символ из этого набора символов хранится в символьной переменной, то ее значение эквивалентно целому коду этого символа. В символьных переменных можно хранить и другие величины, но реализация будет машинно-зависимой. Целый. Можно использовать до трех размеров целых, описываемых как short int, int и long int. Беззнаковый. Целые без знака, описываемые как unsigned, подчиняются законам арифметики по модулю 2**n, где n - число битов в их представлении. Вещественный. Вещественные одинарной точности (float) и вещественные двойной точности (double) в некоторых реализациях могут быть синонимами. В языке нет логического типа данных, а в качестве логических значений используются целые "0" - "ложь" и "1" - "истина" (при проверках любое целое, не равное 0, трактуется как "истина"). Поскольку объекты упомянутых выше типов могут быть разумно интерпретированы как числа, эти типы будут называться арифметическими. Типы char и int всех размеров совместно будут называться целочисленными. Типы float и double совместно будут называться вещественными типами.
Массивы данных в Си. Массивы - это группа элементов одинакового типа (double, float, int и т.п.). Объявление массива имеет два формата: - спецификатор-типа описатель [константное-выражение]; - спецификатор-типа описатель [ ]; Описатель - это идентификатор массива. Спецификатор-типа задает тип элементов объявляемого массива. Элементами массива не могут быть функции и элементы типа void. Константное-выражение в квадратных скобках задает количество элементов массива. Константное-выражение при объявлении массива может быть опущено в следующих случаях: - при объявлении массив инициализируется, - массив объявлен как формальный параметр функции, - массив объявлен как ссылка на массив, явно определенный в другом файле. В языке СИ определены только одномерные массивы, но поскольку элементом массива может быть массив, можно определить и многомерные массивы. Они формализуются списком константных выражений, следующих за идентификатором массива, причем каждое константное-выражение заключается в свои квадратные скобки. Каждое константное-выражение в квадратных скобках определяет число элементов по данному измерению массива, так что объявление двухмерного массива содержит два константных-выражения, трехмерного - три и т.д. Отметим, что в языке СИ первый элемент массива имеет индекс равный 0. Примеры: int a[2][3]; /* представлено в виде матрицы a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2] */ double b[10]; /* вектор из 10 элементов имеющих тип double */ int w[3][3] = { { 2, 3, 4 }, { 3, 4, 8 }, { 1, 0, 9 } }; В последнем примере объявлен массив w[3][3]. Списки, выделенные в фигурные скобки, соответствуют строкам массива, в случае отсутствия скобок инициализация будет выполнена неправильно. В языке СИ можно использовать сечения массива. Сечения формируются вследствие опускания одной или нескольких пар квадратных скобок. Пары квадратных скобок можно отбрасывать только справа налево и строго последовательно. Примеры: int s[2][3]; Если при обращении к некоторой функции написать s[0], то будет передаваться нулевая строка массива s. int b[2][3][4]; При обращении к массиву b можно написать, например, b[1][2] и будет передаваться вектор из четырех элементов, а обращение b[1] даст двухмерный массив размером 3 на 4. Объявление символьного массива: char str[] = "объявление символьного массива"; 11 Структуры данных в Си. Структуры - составной объект, в который входят элементы любых типов, за исключением функций. В отличие от массива, который является однородным объектом, структура может быть неоднородной.Тип структуры определяется записью вида: struct {список определений} В структуре обязательно должен быть указан хотя бы один компонент. Определение структур имеет следующий вид: тип-данных описатель; где тип-данных указывает тип структуры для объектов, определяемых в описателях. В простейшей форме описатели представляют собой идентификаторы или массивы. Пример: struct { double x,y; } s1, s2, sm[9]; struct { int year; char moth, day; } date1, date2; Переменные s1, s2 определяются как структуры, каждая из которых состоит из двух компонент х и у. Переменная sm определяется как массив из девяти структур. Каждая из двух переменных date1, date2 состоит из трех компонентов year, moth, day.Существует и другой способ ассоциирования имени с типом структуры, он основан на использовании тега структуры. Тег структуры аналогичен тегу перечислимого типа. Тег структуры определяется следующим образом: struct тег { список описаний; }; где тег является идентификатором. В приведенном ниже примере идентификатор student описывается как тег структуры: struct student { char name[25]; int id, age; char prp;}; Тег структуры используется для последующего объявления структур данного вида в форме: struct тег список-идентификаторов.Пример: struct studeut st1,st2; Использование тегов структуры необходимо для описания рекурсивных структур. Ниже рассматривается использование рекурсивных тегов структуры. struct node { int data; struct node * next; } st1_node; Тег структуры node действительно является рекурсивным, так как он используется в своем собственном описании, т.е. в формализации указателя next. Структуры не могут быть прямо рекурсивными, т.е. структура node не может содержать компоненту, являющуюся структурой node, но любая структура может иметь компоненту, являющуюся указателем на свой тип, как и сделано в приведенном примере. Доступ к компонентам структуры осуществляется с помощью указания имени структуры и следующего через точку имени выделенного компонента, например: st1.name="Иванов"; st2.id=st1.id; st1_node.data=st1.age;Операции и выражения в СИ Унарные операции * (косвенная адресация): выражение должно быть указателем, а рез-том явл-ся l_значение (lvalue), ссылающееся на тот объект, на кот. указ-ет выражение. & (взятие адреса):рез-т - указатель на объект, на кот. ссылается l_значение. - (минус): рез-т - ее операнд, взятый с противоположным знаком. Для unsigned рез-т получ-ся вычитанием ее знач-я из 2**n, где n-число битов в int. Унарной операции + (плюс) не существует. ! (логическое отрицание): результат - 1, если знач-е ее операнда равно 0, и 0, если знач-е ее операнда отлично от нуля. Результат имеет тип int. Эта операция применима к любому арифметическому типу или указателям. ~ (дополнение до единицы) – дает обратный код своего операнда. Вып-ся обычн. арифм. преобразования. Операнд должен быть целочисленного типа. ++(инкремент). Объект, на который ссылается операнд l_значения операции ++, увеличивается. Выражение ++х эквивалентно х += 1. -- (декремент) - аналогична префиксной операции ++, но приводит к уменьшению своего операнда l_значения. () (cast) - Заключенное в круглые скобки имя типа данных, стоящее перед выражением, вызывает преобраз-е знач-я эт. выражения к указанному типу. sizeof выдает размер своего операнда в байтах. Может быть примен. и к заключенному в круглые скобки имени типа. Тогда она выдает размер в байтах объекта указанного типа. Мультипликативные операции *, /, и % группируются слева направо. % выдает остаток от дел-я перв. выраж-я на второе. Операнды должны быть целого типа. Аддитивные операции + и - группируются слева направо. Операции сдвига << и >> группируются слева направо. Операнды целого типа. Правый операнд преобразуется к типу int; результат имеет тип левого операнда. Результат не определен, если правый операнд отрицателен или больше или равен, чем длина объекта в битах. Операции отношения < (меньше), > (больше), <= (меньше или равно) и >= (больше или равно) дают 0, если указанное отношение ложно, и 1, если оно истинно. Результат имеет тип int. Операции равенства == (равно) и!= (не равно) Операция присваивания выражение_присваивания: l_значение = выражение l_значение (op)= выражение op: -, *, /, %, >>, <<, &, ^, |
|
||||
Последнее изменение этой страницы: 2016-06-26; просмотров: 622; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.14.130.230 (0.006 с.) |