강의로 돌아가기
김경록

코드 이해가 잘 안갑니다 !

int* funca(int arr[], int arrsize, int num){
int* ret = (int)malloc(sizeof(int)(arrsize - 1));
int idx = 0;
for(int i = 0; i < arr
size; ++i)
if(arr[i] != num)
ret[idx++] = arr[i];
return ret;
}

func_a 가 어떤 값이 구해지는건지 잘 이해가 안되네요. 알려주셨으면합니다.
주어진

1 개의 답변
radian

100퍼센트 맞을 거라는 자신이 없어서 댓글로 달려고 했는데... 댓글은 한 줄씩밖에 입력이 안 되네요ㅠㅠ
일단 저도 정답은 나온지라 답변을 한번 적어보아요!

리턴하는 값이 ret인데, 두 번째 줄을 보시면
ret은 인수로 받은 arr_size보다 한 칸 작은 '배열'이 되게끔 메모리를 할당받고 있어요. (malloc함수)
밑의 if문에서는 arr[i]가 num일 때를 제외하고 arr[i]값들을 arr[0]부터 차례차례 ret[ ]배열에 넣고 있구요.

무슨 말이냐면, arr[ ] 배열에 든 값들을 >num을 제외하고< 전부 ret[ ] 배열로 복사해주고 있는 거지요!
원래 배열(arr[ ])에 든 값들을 다른 배열(ret[ ])로 복사하되, 특정 값(num)을 제외한다... 그러니까 이 문제에서는
'가장 큰 값을 제외한 또다른 배열' 을 만들어주는 작업이 필요하니까
num에는 max_first가 들어갈 테고요,

ret은 원 배열에서 maxfirst를 제외한 배열, 즉 visitorremoved가 되겠네요!

답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.