![](/img/trans.png)
[英]error: could not convert ‘print’ from ‘void (*)(int)’ to ‘std::function<void()>’
[英]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.