标题:C语言学习过程中的问题
只看楼主
nmvp
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-8-8
 问题点数:0 回复次数:1 
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]);
这两句请详细解释下。。谢谢了。。
搜索更多相关主题的帖子: C语言 学习 
2010-08-08 14:40
sinoautom
Rank: 2
等 级:论坛游民
帖 子:13
专家分:24
注 册:2010-8-9
得分:0 
上面一句声明函数指针数组~~
第二句应该是函数的个数~~
2010-08-11 09:01



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-315126-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.288915 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved