関数へのポインタ
Posted: 2018年7月08日(日) 11:42
プログラミング初心者です
関数へのポインタの勉強です。
関数へのポインタの勉強です。
#include <stdio.h>
int sum (int x1,int x2)
{
return(x1+x2);
}
int mul(int x1,int x2)
{
return(x1*x2);
}
void kuku(int (*calc)(int,int))
{
int i,j;
for(i=1;i<=9;i++){
for(j=1;j<=9;j++)
printf("%3d",(*calc)(i,j));
putchar('\n');
}
}
int main ()
{
puts("+");
kuku (sum);
puts ("multiply");
kuku(mul);
return(0);
}/[code]
追って行くと、途中からわかりません。
kuku(sum) でkuku関数を呼んで引数としてsumを渡す。
kuku()は(*calc)(int,int)となっていますが ここあたりから疑問が多すぎます。
void kukuが実行される前に引数がsumだからsumが実行されるんじゃないんですか?そうなるとsumの引数、x1,x2が宣言されてないから変なことになるんじゃないんですか?
この場合、kukuの引数=sumとなっていて、どう代入されるのかわかりません。