동적으로 할당 된 요소를 인쇄하려고합니다.void 인쇄 기능에서 오류가 발생했습니다.
여기가 내 문제이기 때문에 학습에 익숙하지 않고 왜 이것이 작동하지 않는지 이해하지 못했습니까? 왜 이것이 오류를 일으키는 지 간략한 설명을 주시면, 저는 실수로 배우려고하고 있습니다. 나는 동적으로 사용자 입력을 메인 함수에 할당 할 수 있다는 것을 알았지 만, 동적으로 함수를 생성 한 후 사용자 함수를 생성하는 입력 함수를 만들면 시행 착오를보고 싶었다. 할당 된.
이 작품을 만들기 위해 내가 할 수있는 것에 대한 제안은 정말 대단합니다.
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'은 포인터의 사본입니다. 동적 배열에'std :: vector'를 사용하는 것이 더 낫습니다. –
std :: vectors가 어떻게 작동하는지 잘 모르겠습니다 만, 아직 벡터를 배우지 못했습니다. 내가 이것을 고칠 수있는 방법을 찾은 후에 벡터로 사용하려고 시도했을지도 모른다. – Pierre
그게 핵심입니다 : 당신은'new' /'new []'를 사용하지 마십시오. 항상 스마트 포인터와'std :: vector'. 여기서는 꽤 간단합니다 :'std :: vector input (size);'그런 다음 참조로 전달하십시오. –