用另一个不同大小的指针替换一个指针

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:用另一个数组中的对应值替换一个数组中的值

用另一个 DataFrame 的值替换 DataFrame 的值

用另一个表中的列值替换列的空值

02char字符与字符串替换,双指针,从后往前

尝试替换场景内容时 JavaFx 中的指针异常

是否可以在运行时替换方法?