关于C++ 中 new的用法的问题是什么意思?悬赏分: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
回答者: 莘莘学子为梦想 - 秀才 三级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 - 试用期 一级2007-3-5 22:15
这是C语言的特性,并由C++所继承。在C/C++中,如果说明
a和b均指向某个数组的第一个元素,而该数组的每个元素都是由4个int组成的数组。
也就是说,最左边的维数到底是2还是3并不重要。当真正理解这个例子后,你的问题也就
解决了。
回答者: xptlbx - 经理 五级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]; ,即:
#includeace 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博客 ” ,链接:https://blog.itpub.net/16856446/viewspace-612835/ ,如需转载,请注明出处,否则将追究法律责任。