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




