Сложение двух матриц с использованием многомерных массивов




Подпрограммы Функции

Определить функцию можно с помощью ключевого слова function:

<тип> function имя (параметры) {

тело;

}

Тип - это тип возвращаемого значения. В скобках после имени функции указываются параметры, для каждого параметра обязательно указывается его тип. В теле функции должен быть оператор return, возвращающий значение указанного при объявлении функции типа.

Если функция не возвращает значения, то ее тип void:

Чтобы функции могли быть вызваны в функции main(), нужно объявить их до функции main. Но это не всегда удобно, учитывая, что код некоторых функций может быть очень длинным. Поэтому мы можем использовать так называемое предварительное объявление функции - это когда вы описываете прототип функции (тип возвращаемого значения, имя, параметры), но не пишете сам код функции. А после функции main() можно будет полно-

стью описать наши функции. Предварительное объявление дает компилятору понять, что мы не забыли о функции и что она будет объявлена далее в коде программы.

Вызов функции всегда является выражением, однако разме­щение такого выражения в тексте программы зависит от типа возвращаемого функцией значения. Если в качестве типа воз­вращаемого значения указан тип void, то функция является функцией без возвращаемого результата. Такая функция не мо­жет входить ни в какие выражения, требующие значения, а должна вызываться в виде отдельного выражения-оператора:

имя функции (список фактических параметров);

Например, следующая функция возвращает значение типа void:

void print(int gg, int mm, int dd)

{

printf("\n год: %d",gg); printf(",\t месяц: %d,",mm); printf (",\t день: %d.*', dd);

}

Обращение к ней print(1966, 11, 22); приведет к такому выводу на экран:

год: 1966, месяц: 11, день: 22,

Может оказаться полезной и функция, которая не только не возвращает никакого значения (имеет возвращаемое значение типа void), но и не имеет параметров. Например, такая:

#include <stdio.h> void Real_Time (void)

{

printf("\n Текущее время: %s", TIME____

" (час: мин: сек.)");

}

При обращении Real_Time ();

в результате выполнения функции будет выведено на экран дисплея сообщение:

Текущее время: 14:16:25 (час: мин: сек.)

Указатели в параметрах функций

Схема передачи параметров по значениям не оставляет никаких надежд на возможность непосредственно изменить фактический параметр за счет выполнения операторов тела функции. И это действительно так.

Объект вызывающей программы, использованный в качестве фактического парамет­ра, не может быть изменен из тела функции. Однако существует косвенная возможность изменять значения объектов вызываю­щей программы действиями в вызванной функции. Эту возмож­ность обеспечивает аппарат указателей. С помощью указателя в вызываемую функцию можно передать адрес любого объекта из вызывающей программы. С помощью выполняемого в тексте функции разыменования указателя мы получаем доступ к адре­суемому указателем объекту из вызывающей программы.

Тем самым, не изменяя самого параметра (указатель-параметр постоянно содержит только адрес одного и того же объек­та), можно изменять объект вызывающей программы.

Тем самым, не изменяя самого параметра (указатель-пара- метр постоянно содержит только адрес одного и того же объек­та), можно изменять объект вызывающей программы.

Продемонстрируем изложенную схему на простом примере:

include <stdio.h>

void positive(int * m) /* Определение функции */

{

m = *m > 0? *m: —*m;

>

void main()

{

int k=-3; positive(&k); printf("\nk=%d", k);

}

Результат выполнения программы:

k=3

Параметр функции positive() - указатель типа int *. При об­ращении к ней из основной программы main() в качестве фак­тического параметра используется адрес &к переменной типа int. Внутри функции значение аргумента (т.е. адрес &к) "запи­сывается" в участок памяти, выделенный для указателя int *m. Разыменование *m обеспечивает доступ к тому участку памяти, на который в этот момент "смотрит" указатель m. Тем самым в выражении *

*m = *m>0? *m:- *m

все действия выполняются над значениями той переменной ос­новной программы (int к), адрес которой (&к) использован в качестве фактического параметра.

 

 

Вычисление среднего арифметического

 

 

 

 

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

Передача данных функции

Сложение двух матриц с использованием многомерных массивов



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-06-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: