Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Dop_Prog_3cem_2010.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
874.5 Кб
Скачать

2.11 Покажчик на функцію

Приклад 2.33

float mul(float x,float y) {return x*y;}

float sum(float x,float y) {return x+y;}

int main()

{float (*ptrmul)(float,float);

float (*ptrsum}(float,float);

ptrmul=mul;

ptrsum=sum;

float f1=3.0,f2=9.0,f3;

f3=(*ptrmul)(f1,f2)+(*ptrsum)(f1,f2);

printf("f3l=%.1f", f3);

float(*ptr)(float,float);

ptr=sum;

printf("sum=%.1f",(*ptr)(f1,f2));

ptr=mul;

printf("mul=%.1f", (*ptr)(f1,f2));

return 0; }

Приклад 2.34

#include <stdio.h>

char *func(){char *s="abcdе"; return s;}

int main()

{char *str;

char *(*prtfunc)();

prtfunc=func;

str=(*prtfunc)();

puts(str);

return 0;}

Приклад 2.35

#include <stdio.h>

int f1(int x){return x+x;};

int f2(int x){return x*x;};

int f3(int x){return ~x;};

int main()

{int(*p[3])(int);

p[0]=f1; p[1]=f2; p[2]=f3;

int a=(*p[0])(5);

int b=(*p[1])(a);

int c=(*p[2])(a);

printf(“a=%d b=%d c=%u\n”,a,b,c);

return 0;}

Приклад 2.36

#include <stdio.h>

void typ0(){printf("Привет,");}

void typ1(){printf(" дорогой");}

void typ2(){printf(" друг!");}

typedef void (*TYPE)();

TYPE mpf[]={typ0,typ1,typ2};

//void (*mpf[])()={typ0,typ1,typ2};

int main()

{for(int i=0;i<3;i++)

mpf[i]();

return 0;}

Приклад 2.37

#include <stdio.h>

float cube(float y) {return y*y*y;}

float sqr(float e) {return e*e;}

float num(float y) {return y;}

typedef float (*PF)(float);

float summa(PF f,float a[],int N)

{float sum=0.0;

for(int i=0;i<N;i++)

sum+=(*f)(a[i]);

return sum;}

int main()

{float res1, res2,A[3]={1.5,2.0,3.0};

res1=summa(cube,A,3);

printf("res1=%.3f\n",res1);

res2=summa(sqr,A,3);

printf("res2=%.3f\n",res2);

res3=summa(num,A,3);

printf("res2=%.3f\n",res2);

return 0;}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]