c++动态定义的数组和指针的关系?比如:int *arr=new int[ivec.size()]; int *p=arr;

这时arr是一个一维数组吗?p是指向指针的指针吗(二维指针)?有没有更短一点的定义方法。。谢谢了问题中那2句是连起来的,那么p保存的是“指针arr的地址”吗?这时对p解引... 这时arr是一个一维数组吗?p是指向指针的指针吗(二维指针)? 有没有更短一点的定义方法。。谢谢了
问题中那2句是连起来的,那么p保存的是“指针arr的地址”吗?
这时对p解引用和对arr解引用有什么区别啊?
展开
 我来答
chiconysun
2012-03-26 · TA获得超过2.2万个赞
知道大有可为答主
回答量:5410
采纳率:92%
帮助的人:2842万
展开全部
基本上没有更简单的方法了,arr 是一个int 指针,指向动态分配的一维数组的首地址,p也是一个int 指针
更多追问追答
追问
问题中那2句是连起来的,那么p保存的是“指针arr的地址”吗?
这时对p解引用和对arr解引用有什么区别啊?
追答
int *p=arr; p保存的就是指针arr的值,(不是arr的地址,那个用二重指针才能保存),此时,p和arr指向同一块存储空间,因此对p反引用和对arr反引用没有区别
zhou1993allen
2012-03-26 · TA获得超过165个赞
知道小有建树答主
回答量:173
采纳率:0%
帮助的人:137万
展开全部
new关键字的作用是,在堆中(另一个特殊的内存空间),而不是在栈中,分配一个ivec.size×4字节大小的内存,并把这块内在的首地址赋给指针变量p。前面说到,数组名本质上也就是一个指针,所以,也可以理解成这句代码是在堆中分配有ivec.size个元素的int类型的数组。往后,你同样可以像引用数组那些使用这个内存
这是动态定义一个一维数组,int *arr=new int[ivec.size()]; 是说定义一个空间大小为ivec.size个元素乘以(int)两个字节的数组,并把首地址传给指针arr,
如果要定义二维的,可以这样
float(*cp)[9][8]或者
cp=new float[8][9]或者
int **array = (int **)malloc(nrows * sizeof(int *));(这种就是动态的)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
10...4@qq.com
2012-03-26 · TA获得超过245个赞
知道答主
回答量:119
采纳率:0%
帮助的人:58.2万
展开全部
其实用我的理解就很简单了。
动态定义数组和指针就是一回事。
这里的arr[i]和p[i];什么时候都相等。
2维数组其实在内存中也是按1维分布。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式