Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Инициализация одномерных массивов
Термином " инициализация " обозначают возможность задать начальные значения элементов массива без программирования соответствующих действий. Например, не прибегая к программным средствам типа присваивания значений в цикле или считывания данных из внешнего источника (файл, клавиатура, блок данных). В С++ одновременно с объявлением массива можно задать начальные значения всех элементов массива или только нескольких первых его компонент. Например: float t[5]={1.0, 4.3, 8.1, 3.0, 6.74};char b[7]={'П','р','и','в','е','т'};/*в данных примерах длину массива компилятор вычисляет по количеству начальных значений, перечисленных в фигурных скобках*/int d[10]={1, 2, 3};char a[10]="Привет";/*в данных примерах определяется значение только заданных переменных d[0],d[1],d[2] и a[0],a[1],...,d[9], остальные элементы не инициализируются*/Если в определении массива явно указан его размер, то количество начальных значений не может быть больше количества элементов в массиве. Пусть необходимо проинициализировать массивы для создания таблицы сообщений об ошибках: char e1[12] = "read error\n";char e2[13] = "write error\n";char e3[18] = "cannot open file\n";Компилятор С++ сам сформирует нужное значение по количеству инициализирующих данных. В нашем случае под массив e2 будет отведено 13 байтов, включая последний байт с нулевым кодом, завершающий каждую строку. Оператор printf("%s имеет длину, равную %d\n",e2,sizeof (e2));выведет на экран write errorимеет длину, равную 13Метод инициализации безразмерных массивов не только менее трудоемок, но и позволяет заменить любое сообщение, без перерасчета размера соответствующего массива. Адресация элементов массива осуществляется с помощью индексированного имени. Синтаксис обращения к элементу массива: ИмяМассива[ВыражениеТипаКонстанты];или ИмяМассива[ЗначениеИндекса];Обращаться к элементам массива можно также посредством механизма указателей. Таким образом, чтобы обратиться к элементу массива, надо указать имя массива и номер элемента в массиве (индекс). Например: a[0] – индекс задается как константа, d[55] – индекс задается как константа, s[i] – индекс задается как переменная, w[4*p] – индекс задается как выражение. Следует помнить, что компилятор в процессе генерации кода задет начальный адрес массива, который в дальнейшем не может быть переопределен. Начальный адрес массива – это адрес первого элемента массива. Вообще в программе начальным адресом массива считается ИмяМассива либо &ИмяМассива[0]. Имя массива считается константой-указателем, ссылающимся на адрес начала массива.
Определение размера памяти для одномерных массивов Массив занимает непрерывную область памяти. Для одномерного массива полный объем занимаемой памяти в байтах вычисляется по формуле: Байты = sizeof (тип) * размер массиваМассив представляет собой набор однотипных данных, расположенных в памяти таким образом, чтобы по индексам элементов можно было легко вычислить адрес соответствующего значения. Например, пусть одномерный массив A состоит из элементов, расположенных в памяти подряд по возрастанию индексов, и каждый элемент занимает по k байт. Тогда адрес i -того элемента вычисляется по формуле: адрес(A[i]) = адрес(A[0]) + i*kПример 1. Определение размера памяти одномерного массива. #include "stdafx.h"#include <iostream>using namespace std;#define v 4#define p 3 int _tmain(int argc, _TCHAR* argv[]){ const int q=4, r=1; int i_mas[10]; int k=sizeof(i_mas); cout << "i_mas[10] занимает " << k << " байт\n"; float f_mas[7]={2.0,4.5,8.3,7.0,1.0}; int t=sizeof(f_mas); cout << "f_mas[7]={2.0,4.5,8.3,7.0,1.0} занимает "<< t <<"байт\n"; double d_mas[2*q-r]; int w=sizeof(d_mas); cout << "d_mas[2*q-r] занимает " << w << " байт\n"; double d1_mas[2*v/p]; int w1=sizeof(d1_mas); cout << "d1_mas[2*v/p] занимает " << w1 << " байт\n"; char c_mas[]="Программирование"; int s=sizeof(c_mas); cout << "c_mas[]=\"Программирование\"занимает"<< s <<"байт\n"; system("pause"); return 0;}Результат выполнения программы: i_mas[10] занимает 40 байт – 4 байта (тип int) * 10 (количество элементов массива) f_mas[7] = {2.0,4.5,8.3,7.0,1.0} занимает 28 байт – 4 байта (тип float) * 7 (объявленное количество элементов массива) d_mas[2*q-r] занимает 56 байт – 8 байт (тип double) * 7 (вычисленное через формулу количество элементов массива) d1_mas[2*v/p] занимает 16 байт – 8 байт (тип double) * 2 (вычисленное через формулу количество элементов массива) c_mas[]="Программирование" занимает 17 байт – 1 байт (тип char) * 17 (16 знаков + нулевой байт '\0')
|
|||||
Последнее изменение этой страницы: 2021-07-18; просмотров: 37; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.142.12.170 (0.006 с.) |