- •Int _tmain(int argc, _tchar* argv[])
- •Void swapargs(int * px, int * py);
- •Void swapargs(int * px, int * py)
- •Void swapargs(int &X, int &y)
- •Void rneg(int &I)
- •Void pneg(int *I)
- •Int _tmain(int argc, _tchar* argv[])
- •Int _tmain(int argc, _tchar* argv[])
- •Int _tmain(int argc, _tchar* argv[])
- •Int _tmain(int argc, _tchar* argv[])
- •Int _tmain(int argc, _tchar* argv[])
- •Void f(int a, int b)
Int _tmain(int argc, _tchar* argv[])
{
double y;
int n;
iterat(g,2.5,1.e-5,&y,&n);// Вызов функции
cout<<"\ny= "<<y<<" n= "<<n<<"\n";
return 0;
}
double g(double x) // Определение функции
{
// Значение правой части x=g(x)
return - x * x * x * 0.04 + 1.08 * x + 0.2;
}
void iterat(double (*g)(double),double x,
double e, double * y, int * k)
{
double d;
// Метод итерации:
*k =1;
do
{
*y = g(x);
d = fabs(*y-x);
(*k)++;
x = *y;
} while ((d>e) && ((*k)<NMax));
}
Пример. Функция myoperator() способна выполнить любую
операцию с двумя целыми числами, – эта операция задается третьим
параметром (см. также Прата С. Язык программирования C++. ).
int plus(int,int);
int minus (int,int);
int myoperator (int x, int y, int (*f)(int,int));
int main ()
{
int m,n;
m = myoperator(7, 5, plus);
cout<<"m= "<<m;
n = myoperator(20, m, minus);
cout<<" n= "<<n<<endl;
return 0;
}
int plus(int a, int b){
return (a+b);
}
int minus (int a, int b){
return (a-b);
}
int myoperator (int x, int y, int (*f)(int,int))
{
int g;
g = (*f)(x,y);
return (g);
}
Массивы как параметры
При передаче массива в качестве параметра нужно:
– в заголовке функции после имени массива указать пустые квадратные
скобки, например,
int sum_arr(int arr[],int size_arr)
– а в вызове функции указать имя массива уже без квадратных скобок:
sum=sum_arr(mass,N);
Пример. Использование массива как параметра функции.
// Массив как параметр функции
//
#include "stdafx.h"
#include <iostream>
using namespace std;
const int N=8;
int sum_arr(int arr[],int);//прототип
Int _tmain(int argc, _tchar* argv[])
{
int mass[N]={11,22,17,26,29,22,27,34};
int sum=sum_arr(mass,N);
cout<<"\nSumma="<<sum<<"\n";
return 0;
}
int sum_arr(int arr[],int size_arr)
{
int s=0;
for (int i=0;i< size_arr;i++) s+=arr[i];
return s;
}
Передать массив в функцию можно также в форме обычного указателя.
Пример. Ещѐ одна версия передачи массива как параметра –
формальный параметр функции объявлен как указатель.
// Массив как параметр функции
//
#include "stdafx.h"
#include <iostream>
using namespace std;
const int N =8;
int sum_arr(int*,int );//прототип
Int _tmain(int argc, _tchar* argv[])
{
int mass[N]={11,22,17,26,29,22,27,34};
int sum=sum_arr(mass,N);
cout<<"\nSumma="<<sum<<"\n";
return 0;
}
int sum_arr(int* arr,int n)
{
for(int i=0;i<n;i++) {
s+=arr[i];
arr[i]=-arr[i];// поменяли знак
}
return s;
}
Из заголовка функции не видно входным или выходным параметром
является массив. Любые изменения элементов массива в теле функции
являются изменением значений массива, переданного в качестве параметра.
Чтобы не допустить таких изменений, можно добавить в объявление
массива-параметра модификатор const и тогда компилятор будет выдавать
сообщение об ошибке при попытке изменить значения массива.
Пример. Использование массива как параметра функции – с помощью
модификатора const запрещено изменение значений массива в функции.
#include "stdafx.h"
#include <iostream>
using namespace std;
const int N=8;
int sum_arr(const int [],int);//прототип
Int _tmain(int argc, _tchar* argv[])
{
int mass[N]={11,22,17,26,29,22,27,34};
int sum=sum_arr(mass,N);
cout<<"\nSumma="<<sum<<"\n";
return 0;
}
int sum_arr(const int arr[],int n)
{
int s=0;
for(int i=0;i<n;i++) {
s+=arr[i];
arr[i]=-arr[i];// теперь это ошибка
}
}
Пример. Вычисление границы безразмерного символьного массива
оформлено в виде функции size_char().
int size_char(char *s); // прототип
