const int n=10;
int mean (int [ ], int ); //прототипфункции нахождения среднего
main () { static int a[n] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
printf ("%d\n", mean(a, n));
return 0;
}
int mean (int array [ ], int k) //передается массив и количество элементов
{int index, sum;
if (n>0)
{for (index=0, sum=0; index<k; index++)
sum +=array[index];
return (int (sum/k));
}
else
{printf ("not\n");
return 0;
}
}
//2. доступ к элементам массива по указателю
#include <stdio.h>
#include <stdlib.h>
const int n=10;
int mean (int [ ], int ); //прототипфункции нахождения среднего
main () {static int a[n] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
printf ("%d\n", mean (a, n) );
return 0;
}
int mean (int *pa, int k) //передается массив и количество элементов
{ int index, sum;
if (k>0)
{ for (index=0, sum=0; index<k; index++)
sum += *(pa + index);
return (int (sum/k)); }
else
{ printf ("not\n");
return 0; }
}
Массив указателей на функцию
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
int dif (int, int); //прототипы функций
int sum (int, int);
main()
{ int a, b;
char upr;
int (*func [ ]) (int, int) = {dif, sum};
cout <<"Input a b:"<< endl; cin >> a>> b;
cout << "Input priznak function"<< endl;
do
{ switch (upr = getche())
{case 'd':
cout << endl;
cout << (*(*func))(a, b); //(*(*(func+0)))(a,b) вызов функции dif
cout <<endl;
cout << (*func[0])(a, b); //вызов функции dif (a,b);
cout << endl; break;
case 's':
cout << endl;
cout << (*func[1])(a, b); //вызов функции sum (a,b);
cout << endl;
cout << (*(*(func+1)))(a, b); //вызов функции sum (a,b);
cout << endl; break;
default: cout << "\n input char\n" << endl;
}
} while (upr !='d' && upr !='s');
return 0;
}
int dif (int a, int b)
{return a-b;}
int sum (int a, int b)
{return a+b;}
Динамический одномерный массив
#include <iostream.h> //вариант 1 в стиле С++
#include <stdlib.h>
const int n=5;
main ()
{ static int *par = new int [n];//выделение памяти под динамический массив
for (int i=0; i<n; i++)
cin >>par[i]; //ввод значений элементов массива
for (i=0; i<n; i++)
cout << par[i] <<" "; //вывод значений элементов массива
cout << endl;
for (i=0; i<n; i++)
cout << &par[i] <<" "; //вывод адресов элементов массива
delete [ ] par; //освобождение памяти, занимаемой динамическим массивом
return 0;
}
#include <stdio.h> //вариант 2 в стиле С
#include <stdlib.h>
const int n=5;
main ()
{int i;
static int *par = (int*) malloc (n * sizeof(int)); //выделение памяти под массив
for (i=0; i<n; i++) //вывод адресов элементов массива
printf ("%p\n", par+i);
for (i=0; i<n; i++)
scanf ("%d", par+i); //или par++ ввод значений элементов массива без &
for (i=0; i<n; i++)
printf (" %5d", par[i]); // или *(par+i) вывод значений элементов массива
printf ("\n");
free (par); //освобождение памяти
return 0;
}
//не для всех !!!!
#include <stdio.h> // еще один способ создания динамического массива
#include <stdlib.h> //int **ppar *ppar *((*ppar) +i)
main ()
{ static int **ppar = new (int *); //выделяется место под динамический указатель *ppar
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.