好的,我有两个指针,一个初始化新数组:
int * array = new int [5];
int * ptr = &array[0]; // or "= array", is this the same?现在让我们分配一些价值
array[0] = 12;现在检查它们是否指向相同的入口和值。
cout << "Adress under array: "<< array << " Value under array: "<< array[0] <<
" Adress under ptr: "<< ptr << " Value under ptr: " << *ptr;输出显示相同的进位,12次显示两次。现在让我们删除数组:
delete [] array;现在我的问题是:
cout << array;输出与以前不同的地址。加在
cout << *ptr;不输出12,因此旧数组中的值发生了更改。
那么,删除数组[]array后指针指向哪里?另一个问题是指向数组的数组指针,还是仅用于int的指针?
我知道int *ptr[x]将是一个指向x整数数组的指针,但是我没有在左边使用方括号,int * array = new int [5],那么array是指向数组的第一个元素的指针吗?
发布于 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 =新的
&array[0],则与array相同删除后,指针指向一个已分配内存的地址,该地址将导致未定义的行为,因为之后您不知道在这个地址上分配了什么
https://stackoverflow.com/questions/41386084
复制相似问题