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

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

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






С помощью объекта 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; просмотров: 482. Нарушение авторских прав; Мы поможем в написании вашей работы!



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

Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...

Методика обучения письму и письменной речи на иностранном языке в средней школе. Различают письмо и письменную речь. Письмо – объект овладения графической и орфографической системами иностранного языка для фиксации языкового и речевого материала...

Классификация холодных блюд и закусок. Урок №2 Тема: Холодные блюда и закуски. Значение холодных блюд и закусок. Классификация холодных блюд и закусок. Кулинарная обработка продуктов...

ТЕРМОДИНАМИКА БИОЛОГИЧЕСКИХ СИСТЕМ. 1. Особенности термодинамического метода изучения биологических систем. Основные понятия термодинамики. Термодинамикой называется раздел физики...

Трамадол (Маброн, Плазадол, Трамал, Трамалин) Групповая принадлежность · Наркотический анальгетик со смешанным механизмом действия, агонист опиоидных рецепторов...

Мелоксикам (Мовалис) Групповая принадлежность · Нестероидное противовоспалительное средство, преимущественно селективный обратимый ингибитор циклооксигеназы (ЦОГ-2)...

Менадиона натрия бисульфит (Викасол) Групповая принадлежность •Синтетический аналог витамина K, жирорастворимый, коагулянт...

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