열혈강의 25-2 두번째 문제 질문
봄바람
질문 제목 : 열혈강의 25-2 두번째 문제 질문질문 내용 :
열혈강의 25-2 두번째 문제에서
main에서 받은 값을 함수로 받아서 새로운 함수를 만들어서 복사를 해주는 것인데
빨간색으로 표시한 부분에서 보면...
temp=*array[i];하고...
temp=(*array)[i]; 에서 가로가 있어야 되는 이유를 모르겠어요..
free(*array)도 마찬가지입니다
가로가 없으면 작동은 안되던데...
글 보시고 가로가 왜 있어야 되는지 답변 부탁드립니다....
// exercise 25-2-1.cpp
/*
// 사용자로부터 정수를 입력. -1을 입력받을 때까지 계속 입력받아
프로그램 종료 직전에 입력받은 정수들을 그대로 출력
문제는 사용자가 정수를 얼마나 많이 입력할지 모르므로
동적 할당을 통해 해결해보자
배열의 길이를 5로 하고 그 이상 입력이 들어오면 배열의 길이를 3씩 늘리자
물론 배열의 길이를 늘릴 수는 없고 보다 큰 길이의 배열을 선언해서
값을 옮기는 형식을 취해야 한다.
*/
#includestdio.h
#includestdlib.h
#pragma warning(disable:4996)
void change(int** array,int* up_num);
int main()
{
int num=5;// 초기 배열 크기
int up=0;// 배열 인덱스
int i=0;// 반복문 증가값
int *arr=(int*)malloc(sizeof(int)*num);
while(1)
{
printf(number : );
scanf(%d,&arr[up]);
if(arr[up]==-1)// 입력 종료 검사
{
break;
}
if(num==up+1)// 배열 확장 검사
{
change(&arr,&num);
}
up++;
}
for(i=0;iup;i++)
{
printf(%d ,arr[i]);
}
free(arr);
return 0;
}
void change(int** array,int* up_num)
{
int number=*up_num+3;
int* temp=(int*)malloc(sizeof(int)*number);
int i=0;//반복문 증가값;
for(i=0;i*up_num;i++)
{
temp[i]=*array[i];
}
free*array;// 이전 배열 삭제
*array=temp;
*up_num+=3;
}