- •Алгоритмы поиска
- •Последовательный поиск
- •Бинарный поиск
- •Инструкции
- •Предпроцессор. Заголовочные файлы. Директивы предпроцессора
- •Указатели
- •В иды указателей
- •Арифметика указателей
- •Указатель типа void*
- •Указатель на указатель
- •Указатель и ключевые слова const, volatile
- •Массивы
- •Примеры объявления массива
- •Инициализация массива
- •Неявная инициализация
- •Явная инициализация массива
- •Массивы и оператор sizeof
- •Трехмерные массивы
- •Связь массивов и указателей
- •Трехмерные массивы
- •Массивы указателей
- •Динамическое распределение памяти
- •Оператор new и массивы
- •Функции
- •Объявление (прототип) функции
- •Объявление inline-функции.
- •Определение
- •Вызов функции
- •Вызов inline – функции
- •2 Способ:
- •3 Пример:
- •Параметры значения
- •Параметры функции main
- •В озвращаемые значения
- •Ключевое слово const и функция
- •«Перегрузка» имен функции
- •Рекурсивные функции
- •Структуры c
Массивы
|
|
|
|
|
|
|
|
|
|
a
ain (){
int a [10];
function(a);
}
10
void function (int var)
{
*var++;
var++;
*var=11;
}
Массивы – один из примеров производных типов данных. Встроенный массив – это
1) совокупность упорядоченных элементов
2) одного и того же типа данных
3) занимающих непрерывную линейную область памяти
4) каждый массив имеет имя. Оно является константным указателем, равным адресу начала массива
5) доступ к отдельным элементам массива может осуществляться по имени массива и индексу или с помощью оператора «*».
Примеры объявления массива
char cAR [10];
int nAr [10][5];
float fAr [2][10][5];
Замечание. Количество элементов может быть задано константным выражением, так как компилятор должен знать на момент компиляции, сколько выделить памяти.
const int N=5;
char ar [N];
int N1 =8;
char ar1[N1]; //error
Инициализация массива
Неявная инициализация
Все элементы статических и глобальных массивов инициализируются компилятором нулями.
Локальные и динамические массивы не инициализируются. При этом компилятор должен знать все размерности массива для резервированной памяти.
int ar [10][5]; // глобальный
int main ()
{
static char ar2 [100]; // статический
float ar3 [3][4][5]; // локальный
}
Явная инициализация массива
Программист может указать компилятору, какими значениями инициализировать элементы массива, причем сделать это можно несколькими способами:
1. Явное указание размерности массива
ar [3] ={1,2,3};
А |
В |
С |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
ar1
нициализирующий список может содержать меньше значений, чем количество элементов в массиве, тогда остальные элементы инициализируются нулямиchar ar1[10]={‘A’, ‘B’, ‘C’};
Примеры для многомерных массивов:
int nar [3][2]={{1,1},{2,2},{3,3}};
char nstring[2][80] = {«первая строка», «вторая строка»};
2. Можно «опустить» старшую размерность, при этом компилятор самостоятельно вычислит размерность массива
char cAr[]={‘A’, ‘B’, ‘C’};
3. Многомерные массивы могут инициализироваться без указания одной (самое старшей или самой левой) из-за размерности массива в квадратных скобках. Компилятор вычисляет размерность автоматически.
int nAr[][3] = {{0,1,2},{3,4,5},{6,7,8}};
Замечание. Если в многомерном массиве необходимо проинициализировать не все элементы, а только несколько первых, в списке инициализаторов можно использовать фигурные скобки.
int nAr[][3]={{0},{3,4},{6,7,8}};
Массивы и оператор sizeof
1) Для одномерного массива с помощью оператора sizeof на этапе компиляции можно вычислить количество элементов.
сhar ar[]= «vasya pupkin»;
size_t n = sizeoff(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(ar [0][0]);// число элементов массива
n=sizeof (ar[0])/sizeof (ar [0][0]); //число столбцов
n=sizeof(ar)/n // число строк