Преобразование строк в другие типы
С помощью объекта Convert: N = Convert.ToInt32(s1);M = Convert.ToDouble(s2);F = Convert.ToBoolean(s3);B = Convert.ToByte(s4);C = Convert.ToChar(k);s5= Convert.ToString(x);С помощью метода Parse: N = int.Parse(s1);N = int.Parse(Console.ReadLine());M = Double.Parse(s2);F = bool.Parse(s3);
14Декларация указателя. Указатель на объект, указатель типа void. Инициализация указателя, значение NULL. Операции над указателями.
type* identifier; void* identifier; //allowed but not recommended Любой из следующих типов может быть типом указателя. · sbyte, byte, short, ushort, int, uint, long, ulong, char, float, double, decimal или bool. · Любой тип enum. · Любой тип указателя. · Любой пользовательский тип структуры, содержащий поля только неуправляемых типов. Типы указателей не наследуют от объектов, не существует преобразований между типами указателей и object. Кроме того, для указателей не поддерживается упаковка и распаковка. Впрочем, можно выполнять преобразования между различными типами указаний, а также между типами указателей и целыми типами. При объявлении нескольких указателей в одном объявлении знак * записывается только с нижележащим типом, а не в качестве префикса с каждым именем указателя. Например: int* p1, p2, p3; // Ok int *p1, *p2, *p3; // Invalid in C# Указатель не может указывать на ссылку или на структуру, содержащую ссылки, поскольку ссылка на объект может быть подвергнута сбору мусора, даже если на нее указывает указатель. Сборщик мусора не отслеживает наличие указателей любых типов, указывающих на объекты. Значением указателя переменной типа myType* является адрес переменной типа myType. Ниже приведены примеры объявлений типов указателей.
Косвенный оператор указателя * можно использовать для доступа к содержимому, на которое указывает переменная указателя. В качестве примера рассмотрим следующее объявление: int* myVariable; Выражение *myVariable обозначает переменную int, находящуюся по адресу, содержащемуся в myVariable. Невозможно использовать косвенный оператор для указателя типа void*. Однако можно использовать приведение для преобразования указателя типа void в любой другой тип и наоборот. Указатель может иметь значение null. При применении косвенного оператора к указателю со значением null результат зависит от конкретной реализации. Обратите внимание, что при передаче указателей между методами может возникнуть непредусмотренное поведение. В примерах указатель возвращается в локальную переменную через параметр Out или Ref либо в виде результата функции. Если указатель был указан в фиксированном блоке, переменная, на которую он указывает, больше не может быть фиксированной. В следующей таблице перечислены операторы, которые можно использовать для указателей в небезопасном контексте. Указатель может иметь значение null. При применении косвенного оператора к указателю со значением null результат зависит от конкретной реализации. Обратите внимание, что при передаче указателей между методами может возникнуть непредусмотренное поведение. В примерах указатель возвращается в локальную переменную через параметр Out или Ref либо в виде результата функции. Если указатель был указан в фиксированном блоке, переменная, на которую он указывает, больше не может быть фиксированной.
15Связь указателей с массивами. Создание динамических массивов и правила работы с ними. В языке С++ при работе с массивами через указатель допускается более простая форма чем рассмотренная ранее. Допустим, что ptr_ar указывает на первый элемент массива array. Тогда для работы с элементами массива можно пользоваться следующей записью: int *ptr_ar = array; ptr_ar[0] = 10; ptr_ar[1] = 20; т.е. доступ к элементам массива осуществляется по его индексу. Массивы удобно передавать функциям через указатели. Пусть имеется функция вычисления суммы элементов массива: int sum(int* ar, int n); и массив элементов int array[5] = {1,2,3,4,5}; Тогда для передачи массива функции sum следует использовать такую запись: int s = sum(array,5); т.е. указатель ar инициализируется по имени массива array и будет указывать на его первый элемент. .16 Строка – массив типа char. Стандартные функции библиотеки string. h. string.h — заголовочный файл стандартной библиотеки языка Си, содержащий функции для работы с нуль-терминированными строками и различными функциями работы с памятью. Функции, объявленные в string.h, широко используются, так как являясь частью стандартной библиотеки, они гарантированно работают на всех платформах, поддерживающих Си. Кроме этого, строковые функции работают только с набором символов ASCII или его совместимыми расширениями, такими как ISO-8859-1; многобайтовые кодировки такие как UTF-8 будут работать, с отличием, что «длина» строки будет определяться как число байтов, а не число символов Юникода, которым они соответствуют. Несовместимые с ASCII строки обычно обрабатываются кодом описанным в wchar.h. Большинство функций string.h не производят никакого выделения памяти и контроля границ; эта обязанность целиком ложится на плечи программиста. 17Перечисления (enum), объединения (union). Перечислимый тип задаёт тип, который является подмножеством целого типа. Объявление переменной перечислимого типа задаёт имя переменной и определяет список именованных констант, называемый списком перечисления:
enum [ <тег>] { <список перечисления>} <описатель> [, <описатель>...]; enum <тег> <описатель> [, <описатель>...]; Тег предназначен для различения нескольких перечислимых типов, объявленных в одной программе. Список перечисления содержит одну или более конструкций вида:
<идентификатор> [= <константное выражение>] Конструкции в списке разделяются запятыми. Каждый идентификатор именует элемент списка перечисления. По умолчанию, если не задано константное выражение, первому элементу присваивается значение 0, следующему элементу – значение 1 и т.д. Запись = <константное выражение> изменяет умалчиваемую последовательность значений. Элемент, идентификатор которого предшествует записи= <константное выражение>, принимает значение, задаваемое этим константным выражением. Константное выражение должно иметь тип int и может быть как положительным, так и отрицательным. Следующий элемент списка получает значение, равное <константное выражение> + 1, если только его значение не задаётся явно другим константным выражением. В списке перечисления могут содержаться элементы, которым сопоставлены одинаковые значения, однако каждый идентификатор в списке должен быть уникальным. Кроме того, идентификатор элемента списка перечисления должен быть отличным от идентификаторов элементов всех остальных списков перечислений, а также от других идентификаторов.
|