C++ 在函数中传递的指针的内存位置被删除
问题:我似乎无法设置指向在函数内部创建的地址的指针。它总是被设置为Null,我如何修复它 问题:我认为问题是由在另一个函数中创建的变量引起的。发生的情况是,函数执行后,指针再次设置为NULLC++ 在函数中传递的指针的内存位置被删除,c++,function,pointers,null,C++,Function,Pointers,Null,问题:我似乎无法设置指向在函数内部创建的地址的指针。它总是被设置为Null,我如何修复它 问题:我认为问题是由在另一个函数中创建的变量引起的。发生的情况是,函数执行后,指针再次设置为NULL 代码: void listAdd(int *list, int &length) { int* tempList = new int[ length + 1 ]; for( int i = 0; i < length; i ++ ) { (tempL
代码:
void listAdd(int *list, int &length) {
int* tempList = new int[ length + 1 ];
for( int i = 0; i < length; i ++ )
{
(tempList)[ i ] = (list)[ i ];
}
cout << " Previous adress: " << hex << list << endl;
if ( list != NULL )
delete[] list;
list = new int[ length + 1 ];
cout << " New address: " << hex << list << endl << dec;
for( int i = 0; i < length; i ++ )
{
(list)[ i ] = (tempList)[ i ];
}
delete[] tempList;
cout << " Enter a number: ";
int stored = 0;
cin >> stored;
(list)[length -1] = stored;
length ++;
cout << " Length: " << length << "\n";
cout << " value at array point 0: " << (list)[length -1];
cout << "\n retry " << (list)[length-1] <<"\n";
cout << "\n \n \n This is pointing to 0x" << hex << list << '\n' << flush;
}
void listAdd(int*list,int&length){
int*templast=newint[length+1];
for(int i=0;i cout您似乎希望在函数返回后对list
所做的更改有效:由于list
是按值传递的,因此函数内操作的对象恰好是您传入的对象的副本。您可能希望通过引用传递对象,即:
void listAdd(int*& list, int &length) {
// ...
}
…或返回结果
int* listAdd(int* list, int& length) {
// ...
return list;
}
list = listAdd(list, length);
实际上,您确实希望将对象封装在一个类中,或者只使用std::vector
如何将list
传递到listAdd()中
?它是如何声明的?@kfsone谢谢,我找不到任何类似的东西,我相信这就是我的问题所在。他的主题行很糟糕,但它给出了一个非常简洁的问题示例:)哇,我的问题的答案和解决方案很好。这正是我想要的。我尝试引用指针,但我没有意识到你必须提到整数是一个实际的指针。非常感谢!