我有一个自定义函数,它将返回一个数组对象。
我像下面这样调用 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/