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

C++入门级选手提一个关于指针的问题

楼主muchina450()2006-09-03 20:51:22 在 C/C++ / C++ 语言 提问

已知一个函数的形参说明为double   *(*p)[10],则对应的实参应定义为什么样子?  
  请知道的大哥大姐说一说~~~ 问题点数:20、回复次数:12Top

1 楼Cicinho(西西尼奥)回复于 2006-09-03 21:31:30 得分 0

指针数组的指针Top

2 楼sinkileu(小心)回复于 2006-09-03 21:46:44 得分 0

有问题吧???  
  double   *(*p)[10]   中根本就没有所需函数指针的参数信息喔!!!Top

3 楼KouHei()回复于 2006-09-03 21:56:02 得分 0

这个,我也是初学,还看不懂你问的是什么呢Top

4 楼muchina450()回复于 2006-09-03 22:05:09 得分 0

二楼仁兄一说我明白了,双重*(*...)代表指针的指针,相对来说double   *(*p)[10]就代表指向二维数组指针的指针,如果要定义相对应的实参应该定义为:double   f[5][10]  
  不知道对不对~~~~(根据形参指高数组变量,对应的实参就是数组名~~)Top

5 楼houdy(致力于图像/图形领域,成为有思想的程序员)回复于 2006-09-03 22:10:12 得分 0

typedef   double*   PDOUBLE;  
  typedef   PDOUBLE   (*PDOUBLEARRAY)[10];  
  PDOUBLE   doublePtrArray[10];  
  PDOUBLEARRAY   pDoublePtrArray   =   &doublePtrArray;  
  希望这样能看的明白点:)Top

6 楼DLNU_LEI()回复于 2006-09-03 22:24:05 得分 0

int   (*p)[3];       指向包含三个整数的数组的指针  
  int   *(*p)[4];     指向包含四个整形指针的数组的指针  
  void*   (*p)(void*);     指向函数的指针,此函数的参数为指针,返回值为指针  
  int*   p();               函数声明,返回值为指针  
   
  char   *   p[5]={"beijing","shanghai","dalian","shenyang","guangzhou"};  
  int   i;  
  for   (i   =   0;   i   <   5;   i   ++)  
  puts(*(p+i));  
  注意:指针数组取出的元素是指针,即*(p+i)是指向一个常量的指针.  
  Top

7 楼DLNU_LEI()回复于 2006-09-03 22:26:36 得分 0

刚才给出的是常见的几种情况,你的属于第二种,在看一下其他的吧,有助于分析此类问题.Top

8 楼toucher()回复于 2006-09-03 22:37:25 得分 0

houdy(致力于图像/图形领域,成为有思想的程序员) 正解,说简单点就是指向指针数组的指针.  
   
  void   fun   (double   *(*p)[10])  
  {cout   <<   "yeah"   <<   endl   ;}  
   
  int   main   ()  
  {  
  double*   arr   [10]   ;  
  fun   (&arr)   ;  
  return   0   ;  
  }Top

9 楼xudeli1979(阿基米德)回复于 2006-09-03 23:21:18 得分 0

也可以这样,但这时p所指的内容并没有分配空间  
  #include   "iostream.h"  
  void   fun   (double   *(*p)[10])  
  {cout   <<   "yeah"   <<endl   ;}  
   
  int   main   ()  
  {  
  double   *(*p)[10];  
  fun   (p)   ;  
  return   0   ;  
  }Top

10 楼UPCC(杂食动物)回复于 2006-09-04 00:08:39 得分 0

#include<iostream>  
   
  using   namespace   std;  
   
   
  void   f(double   *(*p)[10])  
  {  
  for(int   i=0;   i<10;   i++)  
  {  
  (*p)[i]   =   new   double(i);  
  }  
  }  
   
   
  int   main()  
  {  
  double*   d[10];  
  f(&d);  
  for(int   i=0;   i<10;   i++)  
  cout<<*d[i]<<endl;  
  system("pause");  
  return   0;  
  }Top

11 楼sky198202(一剑倾城)回复于 2006-09-14 14:31:55 得分 0

建议楼主看下一《C专家编程》  
  大体给你讲讲吧,double   *(*p)[10],先从最左边的标识符开始找,这里就是p,然后看它右端,  
  是括号,左边是“*”,说明p是一个指针,把(*p)看成一个整体去掉,右面是一个[10],表示p是一个指向有10个元素的数组的指针,double*表示   这个数组的元素类型是double*的,  
  综合一下,表示p是一个指向double*   array[10]的指针。Top

12 楼OOPhaisky(异化$渴望成功~~)回复于 2006-09-14 20:01:11 得分 0

double   *(*p)[10]  
  -----------------------  
  p是一个指针,指向一个数组,数组的每一个元素也是一个指向double变量的指针。  
   
  这么解释可以吧。Top

相关问题

关键词

得分解答快速导航

  • 帖主:muchina450

相关链接

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

广告也精彩

反馈

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