double (*)[] 如何赋值

有如下声明:
double (*ptd)[3]={ };
花括号内应该怎么样初始化呢?试了好多都行不通。
财富值只有4元,想贡献都没得。
一声谢谢,聊表诚意!
谢谢了!

double (*ptd)[3];
从里看外看。
*ptd
表明ptd是一个指针;
ptd指向什么呢?
从右向左看。
[3]
指向一个3元素的数组;
这个数组元素是什么类型呢?
double [3]
指向一个三double元素的数组。

所以ptd是一个指针,指向一个维度3类型double的数组。
对于指针的初始化,要么用另一个同类型指针初始化,要么用指向对象的地址初始化,要么初始化为空值。如下:

double array[3];
double (*p0)[3] = 0;//初始化为空值
double (*p1)[3] = p0;//同类型指针初始化
double (*p2)[3] = &array;//指向对象的地址初始化

====================我是分割线====================

另外,赋值和初始化不是一码事。
如下面的代码

int *p;
p = 0;//赋值



int *p = 0;//初始化

对于第一段代码,一般编译器都会给出警告,使用未初始化的指针。具体请见C++ primer
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-08-05
这是个指针数组,你要区别数组指针和指针数组的区别:
#include<stdio.h>
#include<stdlib.h>
void main()
{
double (*ptd)[3];//可以看作是个二维数组!
double a[4][3]={{1,2,3},{1,5,2},{7,5,8},{9,9,9}};
int i;
ptd=a;
for(i=0;i<12;++i)
{
cout<<(*ptd)[i]<<endl;
}
}
这样就可以了,希望对你有所帮助
相似回答