Студопедия — Преобразование строк в другие типы
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Преобразование строк в другие типы






С помощью объекта 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* p p — указатель на целое число
int** p p — указатель на указатель на целое число
int*[] p p — одномерный массив указателей на целые числа
char* p p — указатель на знак
void* p p — указатель на неизвестный тип

Косвенный оператор указателя * можно использовать для доступа к содержимому, на которое указывает переменная указателя. В качестве примера рассмотрим следующее объявление:

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, если только его значение не задаётся явно другим константным выражением.

В списке перечисления могут содержаться элементы, которым сопоставлены одинаковые значения, однако каждый идентификатор в списке должен быть уникальным. Кроме того, идентификатор элемента списка перечисления должен быть отличным от идентификаторов элементов всех остальных списков перечислений, а также от других идентификаторов.

enum Weekdays{SA, SU, MO,TU, WE, TH, FR};  
enum Weekdays{SA, SU=0,MO,TU,WE, TH, FR}; // SA и SU имеют одинаковое значение
void main()  
{enum Weekdays d1=SA, d2 =SU,d3 = WE, d4;  
d4 = 2; // Ошибка!
d4 = d1 + d2; // Ошибка!
d4 = (enum Weekdays)(d1 + d2); // Можно, но результат
d4 = (enum Weekdays)(d1 - d2); // может не попасть
d4 = (enum Weekdays)(TH * FR); // в область определения
d4 = (enum Weekdays)(WE / TU); // перечисления
}  

 







Дата добавления: 2015-04-19; просмотров: 473. Нарушение авторских прав; Мы поможем в написании вашей работы!



Картограммы и картодиаграммы Картограммы и картодиаграммы применяются для изображения географической характеристики изучаемых явлений...

Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...

Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

ИГРЫ НА ТАКТИЛЬНОЕ ВЗАИМОДЕЙСТВИЕ Методические рекомендации по проведению игр на тактильное взаимодействие...

Реформы П.А.Столыпина Сегодня уже никто не сомневается в том, что экономическая политика П...

Виды нарушений опорно-двигательного аппарата у детей В общеупотребительном значении нарушение опорно-двигательного аппарата (ОДА) идентифицируется с нарушениями двигательных функций и определенными органическими поражениями (дефектами)...

ТРАНСПОРТНАЯ ИММОБИЛИЗАЦИЯ   Под транспортной иммобилизацией понимают мероприятия, направленные на обеспечение покоя в поврежденном участке тела и близлежащих к нему суставах на период перевозки пострадавшего в лечебное учреждение...

Кишечный шов (Ламбера, Альберта, Шмидена, Матешука) Кишечный шов– это способ соединения кишечной стенки. В основе кишечного шва лежит принцип футлярного строения кишечной стенки...

Принципы резекции желудка по типу Бильрот 1, Бильрот 2; операция Гофмейстера-Финстерера. Гастрэктомия Резекция желудка – удаление части желудка: а) дистальная – удаляют 2/3 желудка б) проксимальная – удаляют 95% желудка. Показания...

Studopedia.info - Студопедия - 2014-2024 год . (0.01 сек.) русская версия | украинская версия