강의로 돌아가기
박건우

c++코드가 정상적으로 동작되지 않는 것 같습니다.

배열 수를 계산하는 int count = sizeof(arr) / sizeof(int); 요 부분에서 문제가 있는 것 같은데
비주얼스튜디오로 테스트와는 다른 결과가 나오네요

작성중인 코드―solution.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

bool solution(int arr[], size_t arr_m) 
{
    bool answer = true;
    int count = sizeof(arr) / sizeof(int);
    for( int i = 0 ; i < count; ++i)
    {
        if(arr[i] > count || arr[i] == 0)
        {
            answer = false;
            break;
        }
        else
        {
            arr[i] = 0;
        }
    }    
    return answer;
}
1 개의 답변
Demi

sizeof(arr) / sizeof(int);를 배열의 길이를 알아내는 용도로 쓰신 것 같은데요.
이 방법은 malloc으로 할당된 메모리나, 파라미터의 길이를 알아낼때에는 동작하지 않을 수 있습니다.

두번째 파라미터인 arr_m가 배열의 길이를 담고 있으므로, int count = arr_m으로 코드를 수정하시면 잘 동작할 것 같습니다.

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