Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Определение размера памяти для одномерных массивов




Читайте также:
  1. I. Определение, виды радиоактивности, радиоактивные семейства
  2. II. Расчет массы навески стандартного вещества для приготовления титранта и определение концентрации титранта при его стандартизации.
  3. IV. Определение участников процесса СП.
  4. А. Определение по EN215 ч.1
  5. Автоподбор размера символов
  6. Алгоритм действия кэш-памяти
  7. Алгоритмы обработки двумерных массивов
  8. Алгоритмы обработки одномерных массивов
  9. Алгоритмы распределения памяти
  10. Алгоритмы распределения памяти без использования внешней памяти
  11. Аналитическое определение передаточного отношения.
  12. Антисептики, требования, предъявляемые к ним, основные группы, механизм их действия, область применения, определение чувствительности к ним микробов.

Обращение к элементам одномерного массива

Адресация элементов массива осуществляется с помощью индексированного имени. Синтаксис обращения к элементу массива:

ИмяМассива[ВыражениеТипаКонстанты];

или

ИмяМассива[ЗначениеИндекса];

Обращаться к элементам массива можно также посредством механизма указателей.

Таким образом, чтобы обратиться к элементу массива, надо указать имя массива и номер элемента в массиве (индекс).

Например:

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')





Дата добавления: 2014-01-04; Просмотров: 399; Нарушение авторских прав?;


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



ПОИСК ПО САЙТУ:


Рекомендуемые страницы:

Читайте также:
studopedia.su - Студопедия (2013 - 2019) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление
Генерация страницы за: 0.002 сек.