C언어 헤더파일에서 int& x를 어떻게 사용해야 하는지 모르겠습니다.

조회수 438회

소스.c 파일에 있는 배열의 최솟값, 최댓값, 합, 평균, 분산, 표준편차를 BigArray.c에서 구하여 소스.c에 전달하고 싶습니다. 함수에서 여러개를 전달하려면 int& x를 사용하는 것으로 알고 있습니다. 다른 파일에서 사용하려면 어떻게 해야합니까?

소스.c

#include <stdio.h>
#include <conio.h>
#include <math.h>
#include "BigArray.h"
#define Data_Output_File "Data_output.txt"
void arrayStatistics_basicArray(FILE* fout)
{
    int num_data = 10, min, max;
    double sum, avg, var, std_dev;
    int data_array[MAX_NUM_DATA] = { 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 };
    printf("\nArrayStatistics_basicArray .....\n");
    fprintf(fout, "\nArrayStatistics_basicArray .....\n");
    getArrayStatistics(data_array, num_data, min, max, sum, avg, var, std_dev);
    printf("min(% 5d), max(% 5d), sum(% 7.2lf), avg(% 7.2lf), var(% 7.2lf),std_dev(% 7.2lf)\n", min, max, sum, avg, var, std_dev);
    printf("arrayStatistics_basicArray - completed. Result is also stored in output file(% s).\n", Data_Output_File);
}
int main(void)
{
    FILE* fout;
    fout = fopen(Data_Output_File, "w");
    if (fout == NULL)
    {
        printf("Error in creation of %s !!\n", Data_Output_File);
        return -1;
    }
    arrayStatistics_basicArray(fout);
    fclose(fout);
}

BigArray.h

#pragma once
#ifndef BIG_ARRAY_H 
#define BIG_ARRAY_H
void getArrayStatistics(int* array, int num_data, int& min, int& max, double& sum, double& avg, double& var, double& std_dev);
#endif

BigArray.c

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

void getArrayStatistics(int* array, int size, int& min, int& max, double& sum, double& avg, double& var, double& std_dev)
{
    double sum_sq_diff = 0.0;

    for (int i = 0; i < size; i++) 
    {
        sum += array[i];
    }
    avg = sum / size; 
    for (int i = 0; i < size; i++) 
    {
        sum_sq_diff += (array[i] - avg) * (array[i] - avg);
    }
    var = sum_sq_diff / size; 
    std_dev = sqrt(var); 
}

오류

오류(활성)  E0141   본문이 있는 경우 명명되지 않은 프로토타입 매개 변수를 사용할 수 없습니다. (줄6)
오류(활성)  E0018   ')'가 필요합니다. (줄6)  
오류  C2143   구문 오류: ')'이(가) '&' 앞에 없습니다. (줄6)
오류  C2143   구문 오류: '{'이(가) '&' 앞에 없습니다. (줄6)
오류  C2059   구문 오류: '&' (줄6)
오류  C2059   구문 오류: ')'   (줄6)
오류(활성)  E0020   식별자 "sum"/"avg"/"var"/"std_dev"이(가) 정의되어 있지 않습니다. 

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    int& x; 형태의 변수는 C 언어에는 없고 C++ 언어에만 존재하는 타입입니다.

    즉, 지금 가지고 오신 코드는 C++ 코드입니다.

    어쨋든 현재의 소스 파일들의 확장자를 .c에서 .cpp로 바꾸면 정상적으로 인식할겁니다.

    C언어에서는 대신에 포인터 변수를 써야합니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)