언어/C++

[C++] 오류 : E0146) 이니셜라이저 값이 너무 많습니다.

study_memo 2024. 7. 15. 22:22

<고치기 전 코드>

#include <iostream>
using namespace std;

int func2(int arr[], int N) 
{
	for (int i = 0; i < N; i++) 
	{
		for (int j = i + 1; j < N; j++)
		{
			if (arr[i] + arr[j]==100)
			{
				return 1;
			}
		}
	}
	return 0;
}


int main(void) {
	func2({ 1, 52, 48}, 3);

}

 

-> func2({1, 52, 48}, 3); 부분에서 오류 발생

 

 

이유: C++ 에서는 배열을 함수의 매개변수로 전달할 때 배열을 직접 초기화할 수 없다. 

대신 배열을 매개변수로 전달하기 전, 미리 선언하고 초기화한 다음, 그 배열을 함수에 전달해야 한다. 

 

 

<고친 코드>

#include <iostream>
using namespace std;

int func2(int arr[], int N)
{
    for (int i = 0; i < N; i++)
    {
        for (int j = i + 1; j < N; j++)
        {
            if (arr[i] + arr[j] == 100)
            {
                return 1;
            }
        }
    }
    return 0;
}

int main(void) {
    int arr[] = { 1, 52, 48 };
    func2(arr, 3);
}