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

百思不解,请指点迷津

楼主zhzhzhh(早上睡不醒)2002-04-04 01:01:34 在 C/C++ / C语言 提问

先请看下面EssentialC++中的一段代码  
  bool   seq_elem(int   pos,int   &elem,const   vector<int>*   (*seq_ptr)(int))  
  {  
  const   vector<int>   *pseq=seq_ptr(pos);  
   
  if   (!pseq)  
  {elem=0;return   false;}  
   
  elem=(*pseq)[pos-1];  
  return   true;  
  }  
  我的问题是“const   vector<int>   *pseq=seq_ptr(pos);”这行为什么不用“const   vector<int>   *pseq=(*seq_ptr)(pos);”  
  并且我发现二者的运行结果是一样的,我就给莫名其妙了,书上的原文seq_ptr不应该是个指针吗,怎么可以直接带参数呢? 问题点数:20、回复次数:3Top

1 楼zhzhzhh(早上睡不醒)回复于 2002-04-04 01:38:45 得分 0

还有,我发现第一行写为“bool   seq_elem(int   pos,int   &elem,const   vector<int>*   (&seq_ptr)(int))”时,用上述两种表示也可得到同样结果。也就是说这四种表示得到的结果都一样了。真把我搞糊涂了!Top

2 楼prototype(原型)回复于 2002-04-04 02:29:20 得分 0

我的问题是“const   vector<int>   *pseq=seq_ptr(pos);”  
  这行为什么不用“const   vector<int>   *pseq=(*seq_ptr)(pos);”  
   
   
  both   are   ok.  
  when   you   do   a   function   call,   the   function   name   is   actually  
  implicitly   turned   into   a   pointer   to   the   function's   starting   address.  
   
  so,   the   following   is   valid:  
  int   f()   {   return   0;   };  
  ...  
  f();       //   ok.   'f'   is   implicitly   turned   into   '*f'  
  (*f)();       //ok   too.   you   explicitly   turn   'f'   to   '*f'.  
   
  还有,我发现第一行写为“bool   seq_elem(int   pos,int   &elem,const   vector<int>*   (&seq_ptr)(int))”时,用上述两种表示也可得到同样结果。也就是说这四种表示得到的结果都一样了。真把我搞糊涂了!  
   
   
  same   explanation   as   above.  
  Top

3 楼fat_horse(每天进步一点点)回复于 2002-04-04 02:30:33 得分 20

seq_ptr(pos)和(*seq_ptr)(pos)这两种写法都对,  
  第一种直接用指针做为函数名,事实上是直接通过指针调用函数  
  第二种是常用的方法,通过复引用指针而调用函数。  
  比较起来第二种比较好,一目了然,第一种容易引起误会,以为seq_ptr是函数。  
  唉~~~,EssentialC++里很多写法都不很规范:PTop

相关问题

  • 请高手指点迷津.
  • 请高手指点迷津
  • 请各位指点迷津!!
  • 高手请指点迷津...
  • 请各位指点迷津
  • 请高手指点迷津!!!
  • 请大家指点迷津!
  • 求助,请指点迷津
  • 请达人指点迷津?
  • 请教,请高手指点迷津

关键词

  • c++
  • 函数
  • 指针
  • vector
  • pseq
  • seq
  • pos
  • ptr
  • const vector
  • 结果

得分解答快速导航

  • 帖主:zhzhzhh
  • fat_horse

相关链接

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

广告也精彩

反馈

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