
c++动态定义的数组和指针的关系?比如:int *arr=new int[ivec.size()]; int *p=arr;
这时arr是一个一维数组吗?p是指向指针的指针吗(二维指针)?有没有更短一点的定义方法。。谢谢了问题中那2句是连起来的,那么p保存的是“指针arr的地址”吗?这时对p解引...
这时arr是一个一维数组吗?p是指向指针的指针吗(二维指针)? 有没有更短一点的定义方法。。谢谢了
问题中那2句是连起来的,那么p保存的是“指针arr的地址”吗?
这时对p解引用和对arr解引用有什么区别啊? 展开
问题中那2句是连起来的,那么p保存的是“指针arr的地址”吗?
这时对p解引用和对arr解引用有什么区别啊? 展开
3个回答
展开全部
基本上没有更简单的方法了,arr 是一个int 指针,指向动态分配的一维数组的首地址,p也是一个int 指针
更多追问追答
追问
问题中那2句是连起来的,那么p保存的是“指针arr的地址”吗?
这时对p解引用和对arr解引用有什么区别啊?
追答
int *p=arr; p保存的就是指针arr的值,(不是arr的地址,那个用二重指针才能保存),此时,p和arr指向同一块存储空间,因此对p反引用和对arr反引用没有区别
展开全部
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 *));(这种就是动态的)
这是动态定义一个一维数组,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 *));(这种就是动态的)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
其实用我的理解就很简单了。
动态定义数组和指针就是一回事。
这里的arr[i]和p[i];什么时候都相等。
2维数组其实在内存中也是按1维分布。
动态定义数组和指针就是一回事。
这里的arr[i]和p[i];什么时候都相等。
2维数组其实在内存中也是按1维分布。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询