C++二维数组动态内存分配

对于二维数组和二维指针的内存的分配

这里首选说一下一维指针和一维数组的内存分配情况。

一维:

数组:形如int  a[5];这里定义了一个一维数组a,并且数组的元素个数是5,这里的a是这五个元素的整体表示,也就是通过a我们能找到这五个元素。注意:a是代表数组第一个元素的首地址。&a是代表数组的地址,虽然它们的值相同。

指针: int *p = NULL;这里p是一个指针,它指向的是计算

机内一块存储int类型的内存。P = a;就是让p等于刚才申请的数组的第一个元素的地址。所以通过p我们也能找到那5个元素所以P[i]跟a[i]的作用一样。

注意:

1:int *p = NULL; p的大小在32位机器是4,即使p=a;之后p的sizeof(p)仍然等于4。

2:在声明之后,数组必须分配内存进行初始化。而指针一般是动态分配其指向的内存。

3:不要混淆指针和数组,指针就是指针,数组就是数组,只是数组在一定条件下可以转换成指针。不要将指针和数组混淆。(例如:指针有++,--操作,数组则不可以)。

一维指针的动态内存分配:

int *p = NULL;

p = new int[N];

千万别忘了delete

delete [] p;

p = NULL;

二维数组的内存分配

int a[2][3];   这里分配了一个2X3=6个int大小的数组。二维数组的第二个维度3不能省略。

二维数组的内存在计算机内也是连续的一片地址,只不过每3个元素构成一个一维数组a[i],这里的a[i]代表维度为3的数组的第一个元素的地址。所以a[i][j]的访问跟a[i]的访问也就清楚了。这里的a[i]其实是一个一维数组的第一个元素的地址。

对于二维数组做实参,我们通常用一维指针处理,例如:

 1 #include <iostream>
 2 void test(int *p)
 3 {
 4     for (int i = 0;i<3;++i)
 5     {
 6         for(
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值