将数组的地址分配给变量并删除
Assigning an address of an array to a variable and delete
我的赋值要求我这样做:"分配一个由七个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
箭头仅指向第一个元素。
相关文章:
- 将数组的地址分配给变量并删除
- 根据模板类型有条件地删除变量
- 我无法删除 wxApp 类的成员变量
- 使用 ostream 变量删除代码重复
- 如何一次删除"cmake -D"定义的所有变量?
- 如何删除作为C++联合的成员变量的字符串对象
- 从文件名变量中删除".txt"
- 如何删除可以是指针(模板)的变量?
- C :动态分配的变量未在clang中删除
- 从函数中删除动态内存分配,但无法访问变量
- 如果我不删除动态创建的变量会发生什么
- C :从双变量的分数部分中删除尾随零
- 您可以删除本地静态变量吗?
- 将删除运算符放置在何处以进行动态变量
- 在堆上创建的变量未在 C++ 中删除
- 删除父类时,方法局部静态变量会发生什么情况
- 为什么删除成员变量的复制构造函数不会阻止默认的复制构造函数
- 是否可以使用 lambda 初始化变量(删除复制 ctor 时)
- C++ 通过无序变量删除二叉搜索树
- 基于一个1变量删除文本文件中的特定行