C语言学习过程中的问题
#include <stdio.h>#include <stdlib.h>
#include <time.h>
/* 生成从0到Number的伪随机数 */
#define RANDOM(Number) ((int)(((double)(rand())*(Number))/(RAND_MAX+1)))
#define TOTAL 6
#define TEST1 /* 定义测试输出 */
#define TEST2 /* 定义函数测试输出 */
#define REP /* 定义重复 */
/* 声明函数 */
int sum(int, int);
int mul(int, int);
int dif(int, int);
int main(void)
{
int i,funsel = 0; /* 选择函数序号 */
int a = 10, b = 5; /* 初值 */
int result = 0; /* 结果值 */
/* 声明指向函数的指针数组*/
int (*pfun[])(int, int) = {sum, mul, dif};
/* 执行随机函数选择 */
int element_count = sizeof(pfun)/sizeof(pfun[0]);
/* 是否重复执行条件 */
#ifdef REP
srand(1);
#else
srand((unsigned int)time(NULL)); /* 随机函数播种 */
#endif
for(i = 0 ; i < TOTAL ; i++)
{
/* 生成随机数字,传递给pfun数组 */
funsel = RANDOM(element_count);
if( funsel>element_count-1 )
{
printf("无效数字序号是 %d\n", funsel);
exit(1);
}
#ifdef TEST1
printf("随机数序号 = %d\n", funsel);
#endif
result = pfun[funsel](a , b); /* 调用随机函数 */
printf("结果是 %d\n", result );
}
return 0;
}
/* 定义函数sum */
int sum(int x, int y)
{
#ifdef TEST2
printf("sum函数的参数是%d和%d.\n", x, y);
#endif
return x + y;
}
/* 定义函数mul */
int mul( int x, int y )
{
#ifdef TEST2
printf("mul函数的参数是%d和%d.\n", x, y);
#endif
return x * y;
}
/* 定义函数dif */
int dif(int x, int y)
{
#ifdef TEST2
printf("dif函数的参数是%d和%d.\n", x, y);
#endif
return x - y;
}
以上这段代码,小弟有看不懂的地方,请前辈们指教了。
int (*pfun[])(int, int) = {sum, mul, dif};
int element_count = sizeof(pfun)/sizeof(pfun[0]);
这两句请详细解释下。。谢谢了。。