C++ : The second time calling a function, 但仍然影响我以前的指针

标签 c++ arrays function pointers return

我有一个自定义函数,它将返回一个数组对象。

我像下面这样调用 main() 中的函数

int * FirstPointer = customFunction(123456);

但是当再次使用该功能时

int * SecondPointer = customFunction(23);

它会影响我的 FirstPointer ,它从我第二次将函数调用到 FirstPointer 时插入返回数组。

为什么???

这是我的自定义函数

//Description : integerSplitter(int x) function take in integer value 
//              and return an array object that contain the integer value ONE digit by ONE digit in array object.
//              !! The returned array object is zero-base.
//Example       : int* myObjectPointerName = integerSplitter(8912341379)
//              cout<<myObjectPointerName[0]<<myObjectPointerName[3];
//Creator     : kent.jr@me.com

int* integerSplitter(int x) { 

    int myInteger = x;
    myInteger = x;

    int myIntegerCounter = 0;
    myIntegerCounter = 0;

    int myDivider = 1;
    myDivider = 1;

    while(myInteger>=1) { 
        myInteger /= 10;
        myIntegerCounter++;
    }

    //for most of the compiler
    int* myIntegerArray;
    myIntegerArray = new int[myIntegerCounter];

    /*
    //for LLVM compiler
    int myIntegerArray[myIntegerCounter];
    */
    /*
    //for GCC Compiler
    //const int constMyIntegerCounter = myIntegerCounter;
    int* myIntegerArray = new int[ constMyIntegerCounter ];
    */

    myInteger = x;
    while(myIntegerCounter >= 1) {
        myIntegerCounter--;
        myIntegerArray[myIntegerCounter] = (myInteger/myDivider)%10;
        myDivider *= 10;
    }


    //The above while statement will automatically carry out the below statement
    //....
    //....
    //myIntegerArray[0] = (myInteger/10000000)%10;
    //myIntegerArray[1] = (myInteger/1000000)%10;
    //myIntegerArray[2] = (myInteger/100000)%10;
    //myIntegerArray[3] = (myInteger/10000)%10;
    //myIntegerArray[4] = (myInteger/1000)%10;
    //myIntegerArray[5] = (myInteger/100)%10;
    //myIntegerArray[6] = (myInteger/10)%10;
    //myIntegerArray[7] = (myInteger/1)%10;

    return myIntegerArray;
}

最佳答案

因为函数正在返回一个指向静态 int 数组的指针(换句话说,每次返回的指针都是相同内存地址)。您需要修复 cusctomFunction 以改为每次都返回一个新分配的数组。

关于C++ : The second time calling a function, 但仍然影响我以前的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9315702/

相关文章:

c++ - 从导入的二维数组计算平均值

function - rust 封闭和fn不匹配

c++ - 在 Qt 问题中检测屏幕旋转

c++ - 读写类 vector

java - 如何在 Android 中正确排序数组中的大写和小写字符串?

arrays - Postgres : How to use arrays as stored procedure parameters efficiently?

c++ - 错误 : dns_sd. h:没有这样的文件或目录

c++ - 可以在构造时修改命名的 std::string 吗?

azure - 如何记录和审核 Azure Functions 代码和配置更改

r - 创建R函数来查找两点之间的距离和角度