30/09/2018, 19:02

[C] Thắc mắc về con trỏ trỏ đến hàm (Pointers to functions)

Mọi người ơi mình đang học ngôn ngữ c, học đến con trỏ rồi mà phần con trỏ trỏ đến hàm mình không hiểu lắm, mọi người có thể giải thích cho mình được ko ạ
Dưới đây là 1 đoạn code sử dụng con trỏ mình viết:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

void statistic(float a[10], float *m, float *v, float *s)
{
 for(int i=0;i<10;i++){
   *m+=a[i];
   }
 *m/=10;
 for(int i=0;i<10;i++){
   *v+=((a[i]-*m)*(a[i]-*m));
}
 *v/=10;
 *s=sqrt(*v);
   }

int main()
{
 float m=0.0;
 float v=0.0;
 float a[10];
 float s;
 for(int i=0; i<10; i++){
  scanf("%f", &a[i]);
  }
 statistic(a, &m, &v, &s);
 printf("m=%f
v=%f
s=%f
", m, v, s);
 return 0;
}

Yêu cầu của bài tập là từ đoạn code này viết ra 1 chương trình có 4 hàm: ArithMean (float a[10]), Variance (float m, float a[10]), float StandDev (float v) và statistic2 () sử dụng 3 con trỏ trỏ đến 3 hàm này để tính và in ra giá trị của m, v, s. Mọi người giúp mình bài này với. Cám ơn nhiều ạ

minh tran viết 21:15 ngày 30/09/2018

bạn định nghĩa 3 funtion pointer như sau:
typedef float (*arithmean)(float *a);
typedef float (*variance)(float m,float *a);
typedef float (*standev)(float v);
statistic2(arithmean a,variance b,standdev v);

bây giờ thì arithmean,variance và standdev đã thành 1 kiểu, bạn viết 3 hàm có tên bất kỳ nhưng phải trùng argument và kiểu trả về với function pointer định nghĩa ở trên, bỏ vào hàm statistic2 để chạy. Về cơ bản thì function pointer ko khác gì pointer bth, cũng chỉ giữ giá trị của hàm trỏ tới.

Bài liên quan
0