Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
вопрос-ответ.docx
Скачиваний:
21
Добавлен:
11.05.2015
Размер:
123.88 Кб
Скачать

17. Общая характеристика стандартных математических функций (библиотека math.H).

Математические функции языка Си декларированы в файлах math.h и stdlib.h.

В приведенных здесь функциях аргументы и возвращаемый результат имеют тип double. Аргументы тригонометрических функций должны быть заданы в радианах (2π радиан = 360°).

18. Одномерный массив - описание, инициализация, обращение к элементам

В программе одномерный массив объявляется следующим образом:

тип ID_массива [размер] = {список начальных значений};

тип – тип элементов массива;

размер – количество элементов в массиве.

Список начальных значений используется при необходимости задать начальные значения (инициализировать элементы массива), он может отсутствовать. Значения в списке разделяются запятыми. (Такое задание списка элементов массива допустимо только при его инициализации и недопустимо в операции присваивания).

Примеры объявления массива:

int a[6];

double x[5]={2, 3.5, -4.5e3, 2.34, -.7 };

Если в группе {…} список значений короче, то оставшимся элементам присваивается 0.

Обращение к конкретному элементу массива в программе осуществляется путем записи имени массива и за ним в квадратных скобках - номера элемента, например:

a[0]=1;

a[i]++;

a[3]=a[i]+a[i+1];

Индексы массивов в языке Си начинаются с 0, т.е. в массиве x первый элемент: x[0], второй – x[1], … пятый – x[4].

Размер массива может задаваться только константой или константным выражением. Нельзя задавать массив переменного размера. Для этого существует отдельный механизм – динамическое выделение памяти.

С другой стороны, если требуемое количество элементов массива заранее неизвестно, часто объявляют массив достаточно большого размера, а используют лишь столько из его элементов, сколько нужно. При этом требуется переменная, задающая количество используемых в данный момент элементов массива:

int a[100], n, i;

M: cout<<"Vvedite kolichestvo elementov (ne bolshe 100)";

cin>>n;

if (n>100) goto M;

cout<<"Vvedite elementy:\n";

for (i=0; i<n; i++)

cin >> a[i];

19.Указатели, операции «*» и «&».Операция sizeof

*Указатели, операции «*» и «&».

* --операция умножения

&--адрес. &выражение

*Операция sizeof

Данная операция позволяет определить размер объекта по ID или типу, результатом является размер памяти в байтах (тип результата int). Формат записи:

sizeof(параметр);

где: «параметр» – тип или идентификатор объекта (не ID функции).

Если указан идентификатор сложного объекта (массив, структура, объединение), то получаем размер всего сложного объекта. Например:

sizeof(int)  размер памяти – 4 байта,

int b[5];

sizeof(b)  размер памяти – 20 байт.

20. Инициализация указателей

При работе с указателями большинство программистов придерживаются следующего важного соглашения: указатель, не ссылающийся в текущий момент времени должным образом на конкретный объект, должен содержать нулевое значение. Нуль используется потому, что С гарантирует отсутствие чего-либо по нулевому адресу. Следовательно, если указатель равен нулю, то это значит, во-первых, что он ни на что не ссылается, а во-вторых — что его сейчас нельзя использовать.

Указателю можно задать нулевое значение, присвоив ему 0. Например, следующий оператор инициализирует р нулем:

char *p = 0;

Для всех переменных выделяются участки памяти размером, соответст-вующим типу переменной. Программист имеет возможность работать непо-средственно с адресами, для чего определен соответствующий тип данных – указатель. Указатель имеет следующий формат:

тип *имя_указателя;

Например:

int *a;

double *b, *d;

char *c;

Знак «звездочка» относится к имени указателя. Значение указателя соот-ветствует первому байту участка памяти, на который он ссылается. На один и тот же участок памяти может ссылаться любое число указателей.

В языке С существует три вида указателей: