注册 登录
编程论坛 C++教室

关于动态数组

cclearner 发布于 2007-07-05 16:21, 1053 次点击
动态数组
float (*cp) [25][10];
cp=new float [10][25][10];
这里的红色部分,属于哪一种写法?
还是就是这里的一种特殊表示?(尤其是那个括号)
另外第二句的第一个中括号内的10到底代表什么呢?
14 回复
#2
aipb20072007-07-05 17:02
你理直接解这个多维数组不容易。
先看下面这个2维的。

float *p[5]; //不加括号,这表示声明一个5个元素的数组p,元素类型为指向float的指针。
float (*p)[5]; //加括号,声明一个指针,指向一个数组,这个数组有5个float元素。

理解上面这个,再去看lz的问题,其实就是一个3维数组。
cp=new float [10][25][10]
这样的写法我没看到过,怀疑,不知真确否。
#3
cclearner2007-07-05 17:29
哦,知道了
谢谢
我的书上特地这样写的,但没说第一个是什么
所以,唉!
#4
HJin2007-07-05 19:41

以下是引用aipb2007在2007-7-5 17:02:27的发言:
你理直接解这个多维数组不容易。
先看下面这个2维的。

float *p[5]; //不加括号,这表示声明一个5个元素的数组p,元素类型为指向float的指针。
float (*p)[5]; //加括号,声明一个指针,指向一个数组,这个数组有5个float元素。

理解上面这个,再去看lz的问题,其实就是一个3维数组。
cp=new float [10][25][10]
这样的写法我没看到过,怀疑,不知真确否。

float (*cp) [25][10];
int n=10;

cp=new float [n][25][10];

1. cp=new float [10][25][10]; is 100% standard C++.
2. The only thing we need to remember is that only the first dimension can be variable; i.e., the 2nd and 3rd dimensions have to constants. Otherwise, the compiler would not be able to determine how many bytes to allocate.

#5
cclearner2007-07-05 21:28
??????
不懂二位斑竹说的
我的书上说
这是一个二维数组!
个数是25*10


这是怎么回事??????
#6
cclearner2007-07-05 21:28
天啊!我的书
#7
cclearner2007-07-05 21:29
哦,我知道了
#8
cclearner2007-07-05 21:30
书上说的是
float *a
a=new float [10][25][10]
是错误的,是二维的
#9
cclearner2007-07-05 21:32
可是为什么在声明指针的时候
不用写上[][25][10]
呢?
#10
Arcticanimal2007-07-05 21:35

float *a;
a=new float [10][25][10];

在VC++6.0里面会有指针类型不匹配的错误

#11
aipb20072007-07-05 21:41
其实多数问题2维数组足够了。
多维数组再加个指针,让人头大,何必呢,完全有其他方式取代。

a=new float [10][25][10];

HJin都说可以,那应该没问题,只是我没这样用过。
想要动态分配这个3维数组,也可以用其他方法。

float *a;
a=new float [10][25][10];
这样当然不匹配了。

float (*cp) [25][10];
cp=new float [10][25][10];
这样才对。
#12
野比2007-07-05 22:00

1维数组
2维矩阵 - 1维指针数组+N*1维数组
3维页 - 1维页指针数组+N*2维矩阵

ps. 要抓紧学习了, aipb2007...

#13
cclearner2007-07-05 23:08
那么是不是二维的是
float (*cp)[25];
cp=new [10][25];
就是(*cp)后面就是不用写第一维的东西呢?
#14
aipb20072007-07-06 11:51
to clearner:
动态数组的大小可以在运行时确定,这个知道吧?
比如,你可以
int n;
cin >> n;
int *p = new int[n];

多维数组,就你上面这个例子,
float (*cp)[25];
//这时,2维数组中,25要在编译时确定,即常量。
cp=new [n][25]; //动态数组的特性,n与上面一样,可运行时确定。

这个意思!
(>&_*<)
#15
cclearner2007-07-06 15:57
哦,是这个意思~哎,终于晓得拉!!!谢谢!
1