用另一个不同大小的指针替换一个指针
Posted
技术标签:
【中文标题】用另一个不同大小的指针替换一个指针【英文标题】:replacing a pointer with another pointer with different size 【发布时间】:2021-12-25 20:32:15 【问题描述】:似乎这段代码可以在 c++ 中运行。但我还是不明白为什么。既然老数组和新数组大小不同,为什么让老数组等于新数组就好了。
int* oldArray = new int[5];
for (int i = 0; i < 5; i++)
oldArray[i] = i;
int* newArray = new int[10];
for (int i = 0; i < 10; i++)
newArray[i] = i * i;
delete[] oldArray;
oldArray = newArray;
for (int i = 0; i < 10; i++)
std::cout << oldArray[i] << std::endl;
【问题讨论】:
【参考方案1】:oldArray
只是一个指向数组所在内存位置的指针
存储。它没有关于它指向的大小的信息,因为它基本上只是数组的起始地址。
作为指针,您可以将其设置为指向内存中的另一个地址,在这种情况下,newArray
指向的是同一个位置。
+---+---+---+---+---+
oldArray --> | 0 | 1 | 2 | 3 | 4 |
+---+---+---+---+---+
+---+---+---+---+---+---+---+---+---+---+
newArray --> | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
+---+---+---+---+---+---+---+---+---+---+
oldArray = newArray
oldArray
\
\ +---+---+---+---+---+---+---+---+---+---+
/ | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
/ +---+---+---+---+---+---+---+---+---+---+
newArray
【讨论】:
以上是关于用另一个不同大小的指针替换一个指针的主要内容,如果未能解决你的问题,请参考以下文章
Python Numpy:用另一个数组中的对应值替换一个数组中的值