関数ポインター
Posted: 2022年2月28日(月) 22:50
#include<stdio.h>
typedef void (*func)(void);
void hello(void)
{
printf("Hello\n");
}
void bonjour(void)
{
printf("Bonjour\n");
}
void gutentag(void)
{
printf("Guten Tag\n");
}
int main(void)
{
func f[] = { hello, bonjour, gutentag };
int i;
for (i = 0; i < sizeof(f) / sizeof(f[0]); i++) {
printf("%p\n", f[i]);
(*f[i])();
}
return 0;
}
#include<stdio.h>
typedef int (*keisan)(int, int);
int add(int a, int b)
{
return a + b;
}
int sub(int a, int b)
{
return a - b;
}
int mul(int a, int b)
{
return a * b;
}
int div(int a, int b)
{
return (b != 0) ? (a / b) : 0;
}
int main(void)
{
keisan f[] = { add, sub, mul, div };
int i;
for (i = 0; i < sizeof(f) / sizeof(f[0]); i++) {
printf("%p\n", f[i]);
printf("%d\n", (*f[i])(10, 3));
}
return 0;
}