簡體   English   中英

無效打印功能出錯

[英]Error in the void print function

我想做的是打印出動態分配的元素。

這是我的問題,我是新來的學習者,不理解下面的內容為什么不起作用? 如果您可以簡要說明為什么會產生錯誤,那么我只是想從錯誤中學習。 我知道我可以在主函數中動態分配用戶輸入,但是我想嘗試一下,看看是否可以創建一個輸入函數,然后在打印函數中調用它以動態生成用戶元素。已分配。

謝謝任何關於我可以做些什么的建議。

void print(int* input, int size)
{
    uinput(input,size);
    for(int i=0; i<size;i++)
    {
        std::cout << " " << input[i];// Error -> Thread 1:EXC_BAD_ACCESS (code=1,address=0x0)
    }
}

上面沒有打印功能的完整代碼

#include <iostream>
void print(int*, int);
void uinput(int*, int);
int* copy(const int*, int);
int main()
{
    int size;
    int* input;
    std::cout << "Enter the size of the array";
    std::cin >> size;


    std::cout << "Original array:" << std::endl;


    print(input,size);
    int* expander = copy(input,size);

    std::cout << "New array:" << std::endl;

    print(expander,size);

    delete [] input;
    delete [] expander;
    input= nullptr;
    expander = nullptr;
    return 0;
}
void uinput(int* input, int size)
{
    int* uInput = new int[size];
    for(int k=0; k <size;k++)
    {
        std::cin >> uInput[k];
    }
}
int* copy(const int* input, int size)
{
    int* newArray = new int[size*2];
    int j =0;
    for(int i = 0; i <size*2;i++)
    {
        if(j >i)
        {
            newArray[j]=newArray[i];
            j++;
        }
        else
            newArray[j]=0;
    }

    return newArray;
}

更新:我試圖修改,只是讓它指向uInput函數的大小,但這沒有用。

void uinput(int size)
{
    int* uInput = new int[size];
    for(int k=0; k <size;k++)
    {
        std::cin >> uInput[k];
    }
}

您的uinput函數分配內存,但不使用您發送的input參數。 結果,嘗試遍歷該指針所指向的項目(尚未初始化為指向任何內容)是未定義的行為,在這種情況下,會導致程序崩潰。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM