Массивный против S++ Производные типы данникс


Download 26.83 Kb.
bet3/4
Sana27.01.2023
Hajmi26.83 Kb.
#1134020
1   2   3   4

4. Выражение и л-выражение


Доступ к объектам и функциями обеспечива- ется разработками, которые в этом случае ссылаются на объекты.


Выражение, которое обеспечивает связь и постоянную, переменную или функцию, называется л-выражением. Имя объекта в C++ является частным случаем л-выражения.
В C++ допускается изменение значений переменных. Значение константы и функции в C++ не подлежит изменению. л-выражение называется модифицируемым л-выражением, либо леводопустимым выра- жением, если только оно не используется на функцию, массив или константу. Таким образом, леводопустимыми воздействиями называют л-выражения, которые используются на переменные.
Следует заметить, что побовым образом ведет себя и постоянный показатель, с которым мы ознакомились раньше. Он также требует немедленную инициализацию (это его единственный шанс получить определенное значение) и он не допускает последующих изменений собственного значения.
Часто индикатор один «знает» место расположения сюжета, место операции и функцию распределения памяти. Изменение значения этого показателя приводит к потере ссылки на распределенный и динамической памяти объект. Это означает, что соответствующая область памяти на все оставшееся время выполнения программы оказывается недоступной.
По аналоговой причине невозможна и операция присвоения, операндами которой являются имена массивов.
Оперативный

массив1 = массив2;


intArray1[] = intArray2[];

не допускаются транслятором исключительно по той причине, что имя массива аналогично константуму укастырую. Оно является неизменяемым л-выражением, сложатетельно, не является леводопустимым выра-жением и не может располагаться л-выражением от операции освоения.


Массив символов (тип char) содержит инициализацию и список отдельных символьных констант, даже строковых символов. При этом в случае строки символов массив почичить в конце и нулевом символе, разделительной строке, например:

char ca_1 [ ] = { 'C', '+', '+' } ;


char ca_2 [ ] = "С++" ;

Здесь са_1 будет размерности 3, а са_2 - размерности 4 и содержит { 'C', '+', '+', '\0' }.


Массив Odin не может быть инициализирован другим массивом и не может быть назначен другому массиву, например:

int a1 [ ] = { 0, 1, 2 } ;


int а2 [ ] = а1 ; // любовь !!!
. . .
интервал а3 [ 3 ] ;
а3 = а1; // любовь !!!

Чтобы скопировать массив и второй, необходимо скопировать какой-то элемент, например:


константа int a_size = 7 ;


int a1 [ ] = { 0, 1, 2, 3, 4, 5, 6 } ;
…..
интервал a2 [a_size];
для ( int я = 0; я < a_size; я ++)
а2[я] = а1[я];

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


В S++ чистый контроль выхода за границу массива. Вся ответственность лежит на программисте!
Заметим, что при создании в динамической памяти с помощью выращения размещения безымянных массивов объектов (при инициализации указаний на массивы) инициализаторы не допускаются. Инициализатор в выражении размещения может проинициализировать только один объект. И дело здесь не в особых свойствах выражения размещения, а в особенностях языка и самого процесса трасляции.
Рассмотрим процессы, исходящие при выполнении опередления опеределения массива. В этом и многих подобных процессах производитель определяет постоянный указатель:

  • по постоянному выражению в описателе или на основе информации в инициализаторе определяется размером необходимой области памяти. Здесь вы можете найти полную информацию о размере массива. Размер области памяти выравнивается по размеру элемента массива на размерность массива,

  • выделяется память,

  • адрес выделенной области памяти присваивается объекту, который по своим характеристикам билзок постоянному указателю (хотя этот объект совершенно личного типа).

Теперь можно вспомнить публикацию, которая была опубликована от имени и имени предыдущего анализа. Массовая публикация

интервал intArray_7[];


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




Download 26.83 Kb.

Do'stlaringiz bilan baham:
1   2   3   4




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling