整数指针的初始化过程(lh 推荐)

关于C++ 中 new的用法的问题
icn_point.gif 悬赏分:10 - 解决时间:2007-3-8 18:58
我在书上看到“当使用new运算符定义一个多维数组变量或数组对象时,它产生一个指向数组第一个元素的指针,返回的类型保持了除最左边维数外的所有维数。”
如果可以的话,请多举几个例子看看,大家帮帮忙,谢谢了
提问者: blh456 - 见习魔法师 二级







最佳答案
"它产生一个指向数组第一个元素的指针", 这个好理解吧,
in

p1是指向p1[0]的.
"返回的类型保持了除最
我理解它是在说"返回
我说得也不清楚,
// 这个new
int *p1
//这个n
int
/
i


int (*p4)[5][2][10] = new int[3][5][2][10];
至于上面的为什么会写成int (p2*)[10]这个怪怪的样子, 而不是int p2*

http://doc.greatso.com/20070120/6344/
 
5
回答者: 莘莘学子为梦想 - 秀才 三级  offline.gif 2007-3-5 22:30
我来评论>>
提问者对于答案的评价:
我看懂了,谢谢你







相关内容
关于C++中new的用法的一个小问题
c中关于union的用法(遇到一个诡异的问题)
java问题, 在一个方法中,new 类a(){ 方法 }; 是什...
c++ 关于new的用法
关于new的用法
  更多关于"C++" "int *" "new"的问题>>
查看同主题问题: new 用法 c++ new







其他回答    共 3 条
左边的维数应该是不属于用户用到内存的东西。。说是多维,但电脑储存信息的时候不可能存成是多维的。那只是人为的那么去想。。好理解。。。在电脑存的应该还是行。。而数组的最后一位后面还有[/0]来提醒系统 用户定义了占多少内存的数组 - -#我是这么理解的。。那为C高手来详细解释下。。。
回答者: 275989036 - 试用期 一级  online.gif 2007-3-5 22:15

这是C语言的特性,并由C++所继承。在C/C++中,如果说明

a和b均指向某个数组的第一个元素,而该数组的每个元素都是由4个int组成的数组。
也就是说,最左边的维数到底是2还是3并不重要。当真正理解这个例子后,你的问题也就
解决了。
回答者: xptlbx - 经理 五级  offline.gif 2007-3-5 22:36

//相信你看了就明白了,如果要交流C++请加QQ群:17178275
#include
using namesp
int main(
int
int
in
i


int (*f)[2][3] = new int[][2][3];
// b[0] = 1; //运行时错误,无分
// d[0][
e[0][0
// f[0
cou
co
c


cout<
de
d


delete[] f;
}
是什么意思?
就是说他返回的指针是指向数组中的第一个元素的.

t (*p2)[10] = new int[2][10];

的类型实际是一个指除了最左边那一维外的一种类型的东西(的指针), 因为最左边那一维被换成指针了"



(*p2)[10] = new int[2][10];
/ 这个new了一个三维的, 去掉最左边那一维[5],
nt (*p3)[2][10] = new int[5
// 这个很, new了个四维的, 去掉最左边的[3
[10].是因为前者才是我们要的指向数组的指针,
int a[2][4];
则a和b将具有相同的类型


einfo>
{

*a = new int[34];
t (*c)[2] = new i
nt (*d)[2] = new
int (*e)[2][3]
配的


0] = 1;//运行时错误,无分配的内存,d只起指针的作用,用来指向相应的数据
][0][0] = 1;//运行时错误,无分配的内存,f只起指针的作用,用来指向
ut<
out<
cout<
cout<
delet
dele
lete
ele
de

比如
int *p1 = new int[10];

p2是指向p2[0][0]的.

左边维数外的所有维数"
看例子吧.
了的就一维, 最左的那维换掉了, 所以只有int了, 返回的是一个指向int的指针int*.
= new int[10]; 
ew了二维, 去掉最左那一维[2], 剩下int[10], 所以返回的是一个指向int[10]这种一维数组的指针int (*)[10].

还有int[2][10], 所以返回的是一个指向二维数组int[2][10]这种类型的指针int (*)[2][10].
][2][10];
], 还有int[5][2][10], 所以返回是一种指向int[5][2][10]这种三维数组的指针int (*)[5][2][10].

 而后者是一个指针的数组.
两者的差别可以看一下下面的文章
:
int b[3][4];
,即:

#include  
ace std; 


) 
 
 *b = new int[];
nt[34][2];
 int[][2];
= new int[34][2][3];

 a[0] = 1;
内存,b只起指针的作用,用来指向相应的数据
c[0][0] = 1;
][0] = 1;
相应的数据

t<;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16856446/viewspace-612835/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/16856446/viewspace-612835/

你可能感兴趣的:(整数指针的初始化过程(lh 推荐))