Когда массив используется в качестве аргумента функции, передается только адрес массива, а не копия всего массива. При вызове функции с именем массива в функцию передается указатель на первый элемент массива. Параметр должен иметь тип, совместимый с указателем. Т. к передается адрес на начало массива, то информация о размерности теряется, и ее необходимо передавать отдельным параметром.
#include <iostream.h>
#include <time.h>
#include <stdlib.h>
void display (float *, int );
float minim (float *, int );
int main (void)
{
float t[10];
int i;
srand(time(NULL));
for (i = 0; i < 10; i++)
t[i] = 20.*rand()/RAND_MAX-10;
display (t,10);
cout<<"min="<<minim(t,10)<<endl;
return 0;
}
//функция вывода на экран массива
void display (float *a, int k)
{
int j;
for (j = 0; j < k; j++)
cout<< a[j]<<'\t';
cout<<endl;
}
//функция поиска минимального элемента массива
float minim (float *a, int k)
{
int i;
float min=a[0];
for(i=0;i<k;i++)
{
if(a[i]<min)
min=a[i];
}
return min;
}
Т.к. массив передается с использованием указателей, это обозначает, что массив передается по адресу, т.е при изменении элементов массива в функции, изменяются значения элементов в вызывающей функции.
Поэтому в предыдущей задаче ввод элементов массива можно оформить также в отдельной функции, например
//функция ввода элементов массива
void input (float *a, int k)
{
int j;
for (j = 0; j < k; j++)
cin>> a[j];
}