ЗАМЕЧАНИЕ
Если изменение значений вызывающей функции необходимо, для этого
используют специальный трюк с операцией &, описанный ниже при
рассмотрении функции scanf() и указателей языка Си.
Контрольные вопросы
1.
Каковы базовые принципы структурирования программ на языке Си?
2.
В чем разница между глобальными и локальными переменными? Стоит
ли повсеместно использовать глобальные переменные? Надо ли их
полностью исключить? Почему?
3.
Что такое «область видимости» переменной?
4.
В чем разница между передачей параметров в языках
программирования по ссылке и по значению? Как в программе
изменить значение переменной вызывающей функции на языке Си?
5.
Что означает термин «время жизни» переменной?
Структуры данных и управления языка
программирования Си
Наряду с простыми одинарными переменными одного из базовых типов
язык Си позволяет объявлять массивы. Под массивом понимается набор
(упорядоченное множество) элементов одного типа. При этом возможен
доступ к элементам массива путем указания индекса (то есть номера
элемента в массиве). При этом, в отличие от многих языков
программирования, в языке Си принято соглашение о том, что элементы
93
массива нумеруются, начиная с нуля, то есть первый элемент — элемент с
номером 0. Смысл подобной нумерации, несколько странной для читателя,
не являющегося специалистом в программировании, заключается в том,
что индекс можно рассматривать как величину смещения от начальной
ячейки памяти, от которой в памяти помещается массив. При этом Си
оказал огромное влияние на другие языки — даже современные языки
Паскаль-семейства.
Объявляются массивы там же, где и обычные переменные, то есть в начале
функции, но в квадратных скобках после имени указывается размерность
(количество элементов), например:
int a,b,c;
float x[20];
char c,str[40];
Здесь описаны массив вещественных чисел из 20 элементов, а также
массив символов (строка) размерностью 40. Обратите внимание на то, что
в языке Си строки представляют собой массивы символов, при этом на
конец строки указывает символ с кодом (значением), равным нулю.
При работе с массивами часто используют цикл по его элементам, при
этом значение переменной, используемой в качестве индекса, либо
увеличивается, либо уменьшается на единицу. Поскольку нумерация
элементов начинается с нуля, переменная-индекс имеет значение от 0 до
N –
1, где N — количество элементов массива. Связано это с тем, что
фактически индекс элемента в массиве на Си представляет собой
смещение относительно значения указателя в памяти на первый элемент
массива.
Массивы могут фигурировать в качестве формальных и фактических
параметров функций. Пример:
/* обработка массива в Си */
#include
#include
int Pecat_kornei(float args[],int kol)
{
int i;
float res;
for (i=0;i{
if (args[i]>0)
{
res=sqrt(args[i]);
printf
("Корень из %d — го элемента равен %f\n",i,res);
94
}
else
printf("Элемент массива номер %d меньше нуля !",i);
}
}
Используется стандартная библиотека математических функций,
описанных в заголовочном файле math.h. Функция sqrt() возвращает
значение квадратного корня числа.
В
приведенной
программе
используется
цикл
for
языка
программирования Си, который является весьма гибким инструментом.
После ключевого слова for в круглых скобках, разделенные точками с
запятой, идут три выражения. Первое — группа операторов языка,
Достарыңызбен бөлісу: |