C++ 在函数中传递的指针的内存位置被删除

C++ 在函数中传递的指针的内存位置被删除,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

问题:我似乎无法设置指向在函数内部创建的地址的指针。它总是被设置为Null,我如何修复它

问题:我认为问题是由在另一个函数中创建的变量引起的。发生的情况是,函数执行后,指针再次设置为NULL



代码:

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;icout您似乎希望在函数返回后对
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谢谢,我找不到任何类似的东西,我相信这就是我的问题所在。他的主题行很糟糕,但它给出了一个非常简洁的问题示例:)哇,我的问题的答案和解决方案很好。这正是我想要的。我尝试引用指针,但我没有意识到你必须提到整数是一个实际的指针。非常感谢!