首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当我删除数组时指针到哪里去了?指向数组的指针与数组中的元素之间的差异

当我删除数组时指针到哪里去了?指向数组的指针与数组中的元素之间的差异
EN

Stack Overflow用户
提问于 2016-12-29 19:31:59
回答 3查看 89关注 0票数 0

好的,我有两个指针,一个初始化新数组:

代码语言:javascript
复制
int * array = new int [5];
int * ptr = &array[0]; // or "= array", is this the same?

现在让我们分配一些价值

代码语言:javascript
复制
array[0] = 12;

现在检查它们是否指向相同的入口和值。

代码语言:javascript
复制
cout << "Adress under array: "<< array << " Value under array: "<< array[0] <<
" Adress under ptr: "<< ptr << " Value under ptr: " << *ptr;

输出显示相同的进位,12次显示两次。现在让我们删除数组:

代码语言:javascript
复制
delete [] array;

现在我的问题是:

代码语言:javascript
复制
cout << array;

输出与以前不同的地址。加在

代码语言:javascript
复制
cout << *ptr;

不输出12,因此旧数组中的值发生了更改。

那么,删除数组[]array后指针指向哪里?另一个问题是指向数组的数组指针,还是仅用于int的指针?

我知道int *ptr[x]将是一个指向x整数数组的指针,但是我没有在左边使用方括号,int * array = new int [5],那么array是指向数组的第一个元素的指针吗?

EN

Stack Overflow用户

发布于 2016-12-29 19:45:48

int* ptr[5]int* ptr = new int[5];是有区别的

第一个是创建一个大小为5的指针数组,另一个是创建一个指向大小为5的整数数组的指针。

int* ptr = &array[0];和说int* ptr = array;一样

看见。通过执行int* int5 =新的

  1. 创建一个具有5个整数值的数组
  2. 创建指向数组的第一个()地址的指针.这意味着,如果指向&array[0],则与array相同

删除后,指针指向一个已分配内存的地址,该地址将导致未定义的行为,因为之后您不知道在这个地址上分配了什么

票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41386084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档