CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

指针难题!!!!!!

楼主hedayu(天天打鱼)2003-01-03 23:19:37 在 C/C++ / C语言 提问

写出C的说明:  
  例如:x是有两个字符型参数的长整型函数。  
  解答:long   x(char,   char);  
   
  问:  
  d是有5个指针元素的数组,每个指针均指向有两个长整型参数、返回值为高精度型的函数。  
   
  作不出来。帮帮忙。 问题点数:100、回复次数:15Top

1 楼chinajiji(菜鸟叽叽)回复于 2003-01-04 00:16:42 得分 2

double   (*d)(long,   long)   [5];Top

2 楼paul2002(Now 2006!)回复于 2003-01-04 00:25:48 得分 10

typedef   double   (*P)(long,   long);  
  P   arr[5];Top

3 楼redolive(红橄榄)回复于 2003-01-04 00:45:42 得分 2

不重复了,  
  上面的两个答案实质上都是一样的。  
  我支持。Top

4 楼yellowwolf(你们把名给全起了所以我注册色狼)回复于 2003-01-04 00:48:11 得分 10

typedef   double(*P)(long,long);  
  P   d[5];Top

5 楼hongfeeling(无烟亦如烟)回复于 2003-01-04 08:32:12 得分 2

就是上面的答案,两个都一样Top

6 楼lightning(lightning)回复于 2003-01-04 09:52:14 得分 2

以解决,  
  请勿回贴了.  
   
  哈哈Top

7 楼hedayu(天天打鱼)回复于 2003-01-04 10:51:04 得分 0

double   (*d)(long,   long)   [5];  
  错误。因为此时d是一个指针,而不是数组。  
   
  typedef   double   (*p)(long,   long);  
  p   d[5];  
  正确。问题是可以把两个语句合并成一个语句吗?  
  Top

8 楼begincsdn(CNetware)回复于 2003-01-04 11:55:48 得分 30

//方法一:  
  typedef   double(*pFunc)(long,long);  
  pFunc   funcs1[5];  
   
  //方法二:  
  typedef   double(*pFuncs[5])(long,long);  
  pFuncs   funcs2;  
   
  //方法三:  
  double   (*funcs3[5])(long,long);  
  Top

9 楼chinajiji(菜鸟叽叽)回复于 2003-01-04 11:58:33 得分 20

哈哈!   是这样的:  
  方法一(推荐方法,在实际工程中使用很多)  
  typedef   double(*P)(long,long);  
  P   d[5];  
  方法二(喜欢复杂和语法分析爱好者使用,如果是学习,看看可能有点帮助)  
  double   (*   d[5])   (long,long);  
  d是有5个指针元素的数组,每个指针均指向有两个长整型参数、返回值为高精度型的函数。  
   
  郑重声明:下面的写法是错误的!  
  double   (*d)(long,   long)   [5];  
    d   是一个指向函数的指针,该函数返回一个有5个double元素的数组.  
   
  //double   [5]   (*d)(long,   long)   ;  
  //这样也错!  
  Top

10 楼begincsdn(CNetware)回复于 2003-01-04 11:58:36 得分 2

以上三种方案其实对于编译器来说是一种。  
  对于大家来说却是三种,呵呵。献丑啦。Top

11 楼chinajiji(菜鸟叽叽)回复于 2003-01-04 11:59:43 得分 10

下面是测试程序:  
  #include   <iostream>  
  #include   <stdlib.h>  
  using   namespace   std;  
   
  //!double   (*d)(long,   long)   [5];  
  //   d   是一个指向函数的指针,该函数返回一个有5个double元素的数组.  
   
  //double   [5]   (*d)(long,   long)   ;  
  //这样也错!  
   
  //方法一  
  //typedef   double(*P)(long,long);  
  //P   d[5];  
   
  //方法二  
  double   (*   d[5])   (long,long);   //这才是对的!  
   
  double   f1(long,   long)   {  
          cout   <<   "   calling   f1()!"   <<   endl;  
          return   0.0;  
  }  
   
  double   f2(long,   long)   {  
          cout   <<   "   calling   f2()!"   <<   endl;  
          return   0.0;  
  }  
   
  double   f3(long,   long)   {  
          cout   <<   "   calling   f3()!"   <<   endl;  
          return   0.0;  
  }  
   
  double   f4(long,   long)   {  
          cout   <<   "   calling   f4()!"   <<   endl;  
          return   0.0;  
  }  
  double   f5(long,   long)   {  
          cout   <<   "   calling   f5()!"   <<   endl;  
          return   0.0;  
  }  
  int   main(int   argc,   char   *argv[])  
  {  
      d[0]   =   f1;  
      d[1]   =   f2;  
      d[2]   =   f3;  
      d[3]   =   f4;  
      d[4]   =   f5;  
      for(int   i   =   0;   i   <   5;   i++)  
            (d[i])(0,0);  
       
      system("PAUSE");  
      return   0;  
  }Top

12 楼chinajiji(菜鸟叽叽)回复于 2003-01-04 12:14:53 得分 10

说明:main函数中函数指针的获得与使用也可以这样:  
  d[0]   =   &f1;  
  d[1]   =   &f2;  
  d[2]   =   &f3;  
  d[3]   =   &f4;  
  d[4]   =   &f5;  
   
  for(int   i   =   0;   i   <   5;   i++)  
            (*d[i])(0,0);  
  这叫显式法,如果是指向class内的成员函数,只能用显式法,并且还必须写上相关的class的域名:  
  class   A   {  
  public:  
      double   f(long,long){};  
  };  
  int   main()   {  
  double   (*   A::p)(long,long);//显式法  
  p   =   &A::f;//显式法  
  A   a;  
  A   *pa   =   &a;  
  (a.*p).(0,0);  
  (pa->*p).(0,0);  
  return   0;  
  }  
   
  Top

13 楼ToUpdate(老六)回复于 2003-01-04 12:15:38 得分 0

UPTop

14 楼hedayu(天天打鱼)回复于 2003-01-04 16:19:01 得分 0

谢谢大家。Top

15 楼allen88680764(也不知为什么,爱上了编程,呵呵)回复于 2003-01-04 20:07:12 得分 0

double   *d[5](long,long)Top

相关问题

  • 真正的难题:指针!
  • C指针的难题???
  • 一个难题,如何得到指针的句柄?请赐教!
  • 难题征解!!仅用指针实现两个矩阵的乘法运算
  • C语言的指针问题,对我来说是个难题,该怎么办?求助!!
  • 指针!!!!
  • this指针
  • 指针?
  • 指针
  • 指针

关键词

  • 指针
  • 函数
  • long
  • 长整型
  • double
  • pfuncs
  • 指向
  • 方法
  • 参数
  • typedef

得分解答快速导航

  • 帖主:hedayu
  • chinajiji
  • paul2002
  • redolive
  • yellowwolf
  • hongfeeling
  • lightning
  • begincsdn
  • chinajiji
  • begincsdn
  • chinajiji
  • chinajiji

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo