2.3 Функції та масиви
При передаче массива в функцию в качестве параметра указывается имя массива (указатель-константа), т.е. в функцию передается адрес начала массива, и все действия внутри функции производятся именно с элементами массива оригинала. При этом список формальных параметров в заголовке функции имеет две формы:
Int func1(int arr[]) {...}
или int func2(int *mass) {...}
В обоих случаях в функции создается копия указателя соответствующего типа, который действует внутри функции как обычный указатель-переменная и может изменять свое значение. Например, arr++.
Доступ к элементам массива внутри функции может выполнятся как с помощью индексов (arr[1], arr[i]), так и применяя операцию разыменования указателя ( *(arr+1), *(arr+i)).
Для работы со всеми элементами массива необходимо знать количество элементов в массиве. Есть два способа определения конца массива: 1) в качестве одного из параметров в функцию передается размер массива; 2) последний элемент массива задается каким-либо уникальным значением, которое анализируют в функции.
Пример 2.4
#include <stdio.h> |
int sum(int N,int x[]) |
{int summa=0; |
for(int i=0;i<N;i++) |
summa+= x[i]; |
return summa;} |
void main() |
{int a[5]={1,3,5,10,2},c[3]={2,1,6},res1,res2; |
res1=sum(5,a); res2=sum(3,c); |
printf("сумма эл-ов массива a=%d\n",res1); |
printf("сумма эл-ов массива c=%d\n",res2); } |
|
|
Пример 2.5
#include <stdio.h> |
int len(char *); |
void main() |
{char *name="TERMINATOR"; |
printf("Длина 1-ой строки=%d",len(name)); |
char *str="Высшая математика"; |
printf("Длина 2-ой строки=%d",len(str)); } |
int len(char *c) |
{int i=0; |
while(c[i++]); |
return i-1; } |
|
|
2.4 Функции с параметрами по умолчанию
Это функции, которые имеют спецификацию формальных параметров со значениями по умолчанию. При вызове такой функции умалчиваемый параметр может быть опущен. В функциях с умалчиваемыми значениями параметров действует правило: если параметр имеет умалчиваемое значение, то все параметры справа от него должны быть так же с умалчиваемыми значениями
Пример 2.6
#include <stdio.h> |
int def(int a=10, int b=3, int c=4) |
{return a*b+c;} |
int main() |
{int am=2, bm=5, cm=6,res1,res2,res3,res4; |
res1=def(); |
res2=def(am); |
res3=def(am, bm); |
res4=def(am, bm, cm); |
printf(“res1=%d res2=%d ”, res1,res2); |
printf(“res3=%d res4=%d\n”, res3,res4); |
return 0; } |
|
|
