Студопедия

Главная страница Случайная страница

Разделы сайта

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






Использование литералов






¨ Являясь строкой, -константой, литерал представляется как массив элементов типа char с символом ‘\0’ в конце, т.е. с ним (литералом) связан указатель-константа на первый элемент. Будучи константой, литерал размещается в памяти компилятором и хранится в сегменте данных загрузочного модуля программы.

¨ Литерал используется:

1) для инициализации массива типа char (см. п. 2.2); адрес первого байта литерала становится синонимом имени массива;

2) для инициализации указателя типа char*; адрес первого символа литерала становится начальным значением указателя;

3) в выражениях, там, где разрешается применять указатель; компилятор подставляет вместо литерала адрес его первого символа.

¨ Работой компилятора с литералами управляет специальная опция

Main menu/ Options/ Code Generation/ Merge Duplicated String. По умолчанию опция выключена и для каждого литерала в сегменте данных создается своя строка; если опция включена, то для полностью идентичных литералов программы создается один экземпляр строки, на который может быть несколько ссылок.

¨ Пример

char str1 [ ]=”string”; // адрес первого байта литерала - синоним имени массива

char *ptr1=”string”; // адрес первого символа литерала - начальное значение ptr1

char str2 [10]; // массив из 10 элементов с неопределенными значениями

char *ptr2; // ptr2 никуда не указывает

// Операторы

ptr2= ptr1; // ptr2 получает значение адреса второго литерала

str2 =”string”; //нельзя!!! str2 – указатель-константа;

//значения в массив str2 можно ввести или присвоить

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.