关于与new一个指针数组的问题

关于与new一个指针数组的问题


首先对于今天碰到的这个问题一个是基础不牢靠,第二是还是代码量不够,这个要进行反思了,第三是脑子容易短路-。-;
大家都知道为了在程序堆中分配内存,我们经常使用new(在智能指针没有出现之前)以及delete,
日常生活中我们经常这样做:
我们知道 node* p1 = new node[10];表示一个数组且返回的是首元素的地址
我们可以通过以下方式访问类里面的属性和方法

p->_attribute
p->function()

然后有一次我在一个程序中想定义一个三维数组,这个数组里面存放的是指向某个类的指针
然后我就习惯性的这样写代码

node***ArrayNode = new node**[2];
    for (int i = 0; i < 2; ++i) {
        ArrayNode[i] = new node*[2];
        for (int j = 0; j <2; ++j) {
           ArrayNode[i][j] =new node[2];
            for (int k = 0; k < 2; ++k) {
                ArrayNode[i][j][k] = new node(kp,kp);
            }
        }
    }

结果程序提示contrainNode3[i][j][k] = new node(kp,kp);错误 不能将node* 赋值给node(真被自己蠢哭了),我当时傻眼了,这个数组里面存储的是指针啊怎么不能赋值。
后面我就降维写一个简单的一维数组
int* test = new int [2]

int* test = new int[2];
for(int i=0;i<2;++i){
	test[i] = new int(2);
}

代码还是以上错误,然后,妈耶肯定不能赋值啊,这个new的数组不就是普通的数组int a[10]一样吗
哎!!!!!惭愧惭愧
如果我们想定义指针数组 我们可以这样做

typedef int* intPtr;
intPtr*ArrayIntPtr= new intPtr[2];
    for (int i = 0; i < 2; ++i) {
        ArrayIntPtr[i] = new int(2);
    }

释放的时候:

 for (int j = 0; j < 2; ++j) {
        delete ArrayIntPtr[j];
    }
 delete[]ArrayIntPtr;

真的是基础不牢地动山摇啊。

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值