
- •Міністерство освіти і науки україни
- •7.09.05.06 «Турбіни» і 7.09.05.11 «Теплофізика»
- •Харків нту «хпі» 2008
- •1.1 Опис та ініціалізація масивів
- •1.2. Введення/виведення масивів
- •Масиви, як аргументи функції
- •Матриці
- •2.1. Види матриць
- •2.2. Операції з матрицями
- •Варіанти завдань до курсової роботи
- •Список літератури
Масиви, як аргументи функції
Використовуючи масив як аргумент функції, у цю функцію передається покажчик на його перший елемент, іншими словами, передається за адресою. У мові С ім’я масиву, одновимірного або двовимірного, є покажчиком на перший елемент масиву. При цьому інформація про кількість елементів масиву втрачається, і тому доцільно передавати його розмірність через окремий параметр. Якщо розмірність масиву є константою, то можна навести її при описі формального параметра і як межі циклів при обробці масиву усередині функції.
Усередині функції масив інтерпретується як одновимірний, а його індекс зазначається в програмі.
Розглянемо одномірний масив int A[5] і двовимірний масив int B[5][5].
Одновимірні і двовимірні масиви, що використовуються у функціях-підпрограмах, повинні бути передані у функцію за певними правилами, а саме:
Опис функції або створення прототипу функції. Звичайно описується функція в головній програмі перед описом змінних. Так само її можна описати в заголовку функції main(). У дужках зазначають формальні параметри і їх тип. Якщо формальним параметром є масив, то записують покажчик на перший елемент масиву. Перед ім’ям функції-підпрограми наводять тип функції, у нашому випадку – int. Тип функції визначається типом значення, яке повертається з функції-підпрограми в головну функцію.
Опис функції в основній програмі
int func1 (int А1[]); або int func1 (int *А1);
int func2 (int А2[][5]); або int func2 (int (*А2)[5]);
Виклик функції в основній програмі. У головній функції викликається функція із зазначенням імен і списку фактичних параметрів:
func1(A);
func2(В);
При виклику у функцію передається ім’я фактичного масиву (адреси першого елемента), тобто того масиву, що використовується в основній програмі.
Визначення функції. Після головної функції створюють функцію-
підпрограмму, причому в тому самому порядку, що і функцію main():
int func1 (int А1[])
{
Тіло функції;
}
int func2 (int А2[][5])
{
Тіло функції;
}
Приклад 3. Дано дві матриці розмірністю [3х4]. Знайти суму матриць. Оформити розв’язання основної задачі у вигляді функції-підпрограми.
#include <stdio.h>
#include <graph.h>
#define M 3
#define N 4
//опис функції-підпрограми, у дужках записуємо покажчик на перший //елемент масиву.
int slogenie (int T[][M],int K[][M],int s,int F[][M]);
int main (void)
{
int A[M][N],B[M][N],C[M][N];
int i,j;
_clearscreen(_GCLEARSCREEN);
printf("Вводимо матрицю A[3][4]\n");
for(i=0;i<M;i++)
for(j=0;j<N;j++)
scanf("%d",&A[i][j]);
printf("Вводимо матрицю B[3][4]\n");
for(i=0;i<M;i++)
for(j=0;j<N;j++)
scanf("%d",&B[i][j]);
printf("Матриця суми: C[3][4]\n\n");
slogenie (A,B,4,C); //виклик функції-підпрограми в дужках //указуємо фактичні параметри
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
printf("%5d",C[i][j]);
putchar('\n');
}
}
/* **************************************************** */
//визначення функції – підпрограми
int slogenie (int (*T)[M],int K[][M],int s,int F[][M])
{
int i,j;
for(i=0;i<s;i++)
for(j=0;j<M;j++)
F[i][j]=T[i][j]+K[i][j]; }