几行简单的代码我遇到了一个小问题。
以下几行我曾经调用我的方法:
char** paras = new char*;
inputLength = charUtils::readParameterFromConsole(paras, paraCount, stringBeginningIndex);
该方法如下所示:
int charUtils::readParameterFromConsole(char** &inputs, int ¶Count, int &stringBeginningIndex) {
char input[BUFFER_STRING_LENGTH];
cin.getline(input, BUFFER_STRING_LENGTH);
if(strlen(input) > 0)
{
bool stringBeginning = false;
char* part = "";
string partString = "";
for(int i = 0; i < paraCount; i++)
{
if (i == 0)
part = strtok(input, " ");
else
part = strtok(NULL, " ");
inputs[i] = part;
}
} else
{
cout << "Error! No Input!" << endl;
}
cout << &inputs[0] << endl;
cout << inputs[0] << endl;
return strlen(input);
}
readParameterFromConsole 方法中的值是正确的,但在调用方法中它们不再正确。 自从我重构代码并创建一个新类后,我就遇到了这个问题。
谁能给我一个建议吗?
最佳答案
当您说 inputs[i] = part
时,您正在将指针传递回堆栈分配的变量 input
,因为 part
是一个指向由 strtok
返回的 input
的指针。
关于c++ - 指针数组和按引用调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4950794/