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

时间:2018-11-04 19:44:22

标签: c++ arrays pointers

我的任务希望我这样做:“分配一个由七个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(* int p1 =&x,x = 7 <-不是代码,以供参考)。而且我需要取消分配p1和p2(以及p3,但这无关紧要)。它让我取消分配p2,但不分配p1。所以,我在想也许我不了解这个问题或没有正确地解决它。

1 个答案:

答案 0 :(得分:0)

变量int fact(int n) { if (n == 0) return 1; return n * fact(n - 1); } 和变量sev都指向已分配数据的 first 元素。真的就是您所拥有的。

因此,当您取消引用指针时(例如p2),您将仅取消引用该元素的指针,并且仅获得该值。

一种更“图形化”的方式来查看“数组”可能是这样的:

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

箭头仅指向第一个元素。