将数组的地址分配给变量并删除

Assigning an address of an array to a variable and delete

本文关键字:变量 删除 分配 数组 地址      更新时间:2023-10-16

我的赋值要求我这样做:"分配一个由七个int组成的数组;将其初始化为1,2,4,8等…;并将其地址分配给变量p2">

这是我的代码:

int* p2 = new int[7] {1,2,4,8,16,32,64};
cout << "Drill 3 & 4 (allocating 7 element array): " << endl;
for (int i = 0; i < 7; ++i) {
cout << p2[i];
}

但我担心我误解了指示。正因为如此,我尝试了我在网上找到的这个代码:

int* sev = new int[7];
for (int i = 0; i<7; ++i)
sev[i] = i+1;
int* p2 = sev;
cout << "p2= " << p2 << ", *p2=" << *p2 << endl;
cout << "sev= " << sev << ", *sev=" << *sev << endl;

但它输出地址,然后输出1。当我添加一个for循环来为所有元素做七次时,它只是1111111。

上面的代码是将地址分配给指针还是执行其他操作?

稍后,我必须使其等于p1,p1是一个指针(*int p1=&x,x=7<--不是代码,仅供参考(。我需要释放p1和p2(以及p3,但这并不相关(。它允许我释放p2,但不能释放p1。所以,我在想,也许我不理解这个问题,或者没有正确地处理它。

变量sev和变量p2都指向已分配数据的第一个元素。这就是你的全部。

因此,当您取消引用指针(例如*sev(时,您只取消引用指向该元素的指针,并且只获得该值。

一种更"图形化"的方式来查看你的"阵列"可能是这样的:

+--------+--------+--------+--------+--------+--------+--------+|sev[0]| sev[1]| sev[2]| sev[3]| sev[4]| sev[5]| sev[6]|+--------+--------+--------+--------+--------+--------+--------+^|sev/p2

箭头仅指向第一个元素。