Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Объявление встроенного массива.Содержание книги
Поиск на нашем сайте 1. без extern Объявление совмещено с определением, поэтому программист должен предоставить компилятору информацию, сколько выделить памяти. char cAr[10]; int iAr[15]; float fAr[5][3]; float f1Ar[3][3][8]; 2. с extern При объявлении массива производим описание свойств внешнего массива, определённого в другом файле. При объявлении программист должен предоставить компилятору информацию о том, как вычислить адрес начала массива. extern in tar[10][5]; const int N=10; char cAr[N]; //OK! int N1=5; char cAr1[N1]; //ошибка Инициализация массива. int ar1[10][5]; main () { static char ar2[100]; float ar3[3][4][5]; } Явная инициализация. int ar4[3]={1,2,3}; char cAr[2]={‘A;B’}; char cAr1[2]={“AB”}; int nAr[2][2]={{1;1},{2;2}}; char cstring[2][80]={“ Первая строка ”,” Вторая строка ”};
Можно объявить одномерный массив без указания числа элементов. int nAr[][3]={{1,2,3},{2,3,4},…{7,5,8}} //не указано количество строк
Обращение к элементу массива. Оператор [].
Доступ к отдельным элементам массива может выполняться с помощью индексов (они нумеруются с 0, а не с 1). Индекс может быть любым целым выражением.
char Ar[10]; char c=Ar[0]; c=Ar[g]; c=Ar[i]; //i-int c=Ar[i+g-k]; // c=Ar[3.48]; ERROR!! float b; c=Ar[(int)b]; //приводит к типу int (может быть потеря данных) size of – количество памяти, которое занимает массив char ar[]=”abc”; size_t n=sizeof(ar)/sizeof(char) n=sizeof(ar)/sizeof(ar[0]); int ar[][3]={1,2,3,4,5,6,7}; size_t n=sizeof(ar)/sizeof(int); n=sizeof(ar[0])/sizeof(ar[0][0]) //подсчёт элементов в строке n=sizeof(ar)/sizeof(ar[0]); //подсчёт числа строк в массиве ar[]={2,4,5,8}; n=sizeof(ar)/sizeof(ar[0]);
Связь массивов и указателей.
Имя одномерного массива компилятор интерпретирует как константный указатель на нулевой элемент массива.
p
В памяти: int *p=ar; int *int [];
равнозначно tmp=p[i]; tmp=*(p+i); tmp=*(ar+i); переместим указатель к следующему элементу массива, но не ar++(ошибка!) p++; //ar++i
Двумерные массивы.
Двумерные массивы можно представить как одномерный, каждым элементом которого является строка (т.е. одномерный массив). Имя двумерного массива компилятор интерпретирует как константный указатель на нулевую строку. int ar[2][3]={{1;2;3},{4;5;6}};
int ar[N][M]; int sum!=0; for (int i=0; i<N; i++) { for (int j=0; j<M; j++) sum+=ar[i][j]; int *p=&ar[0][0]; for (int i=0; i<sizeof(ar)/sizeof(int); i++) { sum+=*p; p++; } } Трёхмерные массивы.
Имя трёхмерного массива компилятор интерпретирует как константный указатель на нулевой слой (нулевой двумерный массив). int ar[2][3][4]={{{1,2,3,4},{5,6,7,8},{9,10,11,12}},{{-1,-2,-3,-4},{-5,-6,-7,-8},{-9,-10, -11,-12 }}} Массивы указателей.
char * ar [20]; char *ar[]={ “One”,”Two”,”Three” }; char ar1[][6]={ “One”,”Two”,”Three” }; char ar1[3][6]; Т.к. в запрещённом режиме строковые литералы, расположенные в области памяти, защищены от записи, попытка изменить их вызовет ошибку времени выполнения. ar1[1][1]= //ar[1][1]=”D”; - ошибка!
|
|||||||||||||||||||||||||||||||||||||||||||||
|
Последнее изменение этой страницы: 2021-12-15; просмотров: 78; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.236 (0.006 с.) |