Размещение массива в памяти
При создании массива память под все его элементы выделяется последовательно для каждого элемента в зависимости от типа массива. Для многомерных массивов в первую очередь изменяются значения самого правого индекса.
Например, для массива char aCh[2][4] будет выделено восемь байтов памяти, в которых в следующем порядке будут размещены элементы массива:
элемент | aCh[0][0] | aCh[0][1] | aCh[0][2] | aCh[0][3] | aCh[1][0] | aCh[1][1] | aCh[1][2] | aCh[1][3] |
N байта |
Двухмерные массивы можно рассматривать как матрицу, в которой первый индекс определяет строку, а второй индекс - столбец. Порядок расположения элементов матрицы в памяти - по строкам.
При размещении трехмерного массива char aCh[3][2][5] память под элементы этого массива будет выделяться последовательно в соответствии со следующими значениями индексов:
Рис. 7.1.
Общий объем выделяемой под массив памяти определяется как произведение всех размерностей массива (общее число элементов), умноженное на длину типа данных массива.
Элементы массива
Доступ к элементам массива может выполняться:
по указателю на массив и индексу элемента, задаваемого в квадратных скобках: первый элемент массива имеет индекс 0;
по указателю на элемент массива.
Для получения адреса элемента массива применяется оператор &.
Имя массива является адресом массива и эквивалентно следующему выражению: &имя_массива[0].
|
|
Для определения размерности массива в байтах можно использовать функцию sizeof(имя_массива).
Например:
arrayOfInteger[0]=1;
// Присваивание значения
// первому элементу массива
iInt1=arrayOfInteger[1]=13;
// Групповое присваивание
iInt2=&arrayOfInteger[4];
// Получение адреса пятого
// элемента массива
21.
22. Условные конструкции выбора if/else, select.
Конструкция if используется для выполнения некоторого кода только в том случае, когда указанное условие истинно:
if (условие)
{
код для выполнения, если условие истинно
}
Вы говорите браузеру исполнять некоторый код только если указанное условие истинно.
Конструкцию if....else используют для выполнения некоторого кода, если условие истинно, и другого кода, если условие ложно:
if (условие)
{
код, который будет выполнен, если условие истинно
}
else
{
код, который будет выполнен, если условие ложно
}
Оператор выбора или оператор SELECT (SWITCH)
Назначение:
Организация ветвления хода вычислений в соответствии со значением критерия выбора. Оператор выбора предполагает передачу управления одному из вариантов выбора, с которым ассоциировано значение, равное заданному критерию.
ВЫБОР (Критерий)
ВАРИАНТ Значение 1: Составной оператор
ВАРИАНТ Значение 2: Составной оператор
|
|
…
ВАРИАНТ Значение N: Составной оператор
[ИНАЧЕ: Составной оператор]
23. Конструкции циклов for, while, do/ while; операторы break и continue.
Оператор for - это наиболее общий способ организации цикла. Он имеет следующий формат:
for (выражение 1; выражение 2; выражение 3) тело
Выражение 1 обычно используется для установления начального значения переменных, управляющих циклом. Выражение 2 - это выражение, определяющее условие, при котором тело цикла будет выполняться. Выражение 3 определяет изменение переменных, управляющих циклом после каждого выполнения тела цикла.
Схема выполнения оператора for:
1. Вычисляется выражение 1.
2. Вычисляется выражение 2.
3. Если значения выражения 2 отлично от нуля (истина), выполняется тело цикла, вычисляется выражение 3 и осуществляется переход к пункту 2, если выражение 2 равно нулю (ложь), то управление передается на оператор, следующий за оператором for.
Существенно то, что проверка условия всегда выполняется в начале цикла. Это значит, что тело цикла может ни разу не выполниться, если условие выполнения сразу будет ложным.
Пример:
int main()
{ int i,b;
for (i=1; i<10; i++)
b=i*i;
return 0;
}
Оператор цикла while называется циклом с предусловием и имеет следующий формат:
|
|
while (выражение) тело;
В качестве выражения допускается использовать любое выражение языка Си, а в качестве тела любой оператор, в том числе пустой или составной. Схема выполнения оператора while следующая:
1. Вычисляется выражение.
2. Если выражение ложно, то выполнение оператора while заканчивается и выполняется следующий по порядку оператор. Если выражение истинно, то выполняется тело оператора while.
3. Процесс повторяется с пункта 1.
Оператор цикла вида
for (выражение-1; выражение-2; выражение-3) тело;
может быть заменен оператором while следующим образом:
выражение-1;
while (выражение-2)
{ тело
выражение-3;
}
Так же как и при выполнении оператора for, в операторе while вначале происходит проверка условия. Поэтому оператор while удобно использовать в ситуациях, когда тело оператора не всегда нужно выполнять.
Внутри операторов for и while можно использовать локальные переменные, которые должны быть объявлены с определением соответствующих типов.
Оператор цикла do while называется оператором цикла с постусловием и используется в тех случаях, когда необходимо выполнить тело цикла хотя бы один раз. Формат оператора имеет следующий вид:
|
|
do тело while (выражение);
Схема выполнения оператора do while:
1. Выполняется тело цикла (которое может быть составным оператором).
2. Вычисляется выражение.
3. Если выражение ложно, то выполнение оператора do while заканчивается и выполняется следующий по порядку оператор. Если выражение истинно, то выполнение оператора продолжается с пункта 1.
Чтобы прервать выполнение цикла до того, как условие станет ложным, можно использовать оператор break.
Операторы while и do while могут быть вложенными.
Пример:
int i,j,k;
...
i=0; j=0; k=0;
do { i++;
j--;
while (a[k] < i) k++;
}
while (i<30 && j<-30);
Оператор break обеспечивает прекращение выполнения самого внутреннего из объединяющих его операторов switch, do, for, while. После выполнения оператора break управление передается оператору, следующему за прерванным.
Оператор continue, как и оператор break, используется только внутри операторов цикла, но в отличие от него выполнение программы продолжается не с оператора, следующего за прерванным оператором, а с начала прерванного оператора. Формат оператора следующий:
continue;
Пример:
int main()
{ int a,b;
for (a=1,b=0; a<100; b+=a,a++)
{ if (b%2) continue;
... /* обработка четных сумм */
}
return 0
}
Когда сумма чисел от 1 до а становится нечетной, оператор continue передает управление на очередную итерацию цикла for, не выполняя операторы обработки четных сумм.
Оператор continue, как и оператор break, прерывает самый внутренний из объемлющих его циклов.
Дата добавления: 2015-12-21; просмотров: 19; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!