c언어 입력 받은 배열 더하기 입니다.


입력받은 숫자들의 합을 구하는 프로그램 인데요. 비어있는 함수칸에 malloc()  를 이용해서 구현하고 싶습니다. 어떻게 넣어야 할까요?

'''코드''' int allocate(int num){

}

int main(){

int num2 = -1;
int *int_array;

printf("input: ");
scanf("%d", &num2);
if(num2 <= 0){
    printf("BAD\n");
} else{
    int_array = allocate(num2);
    for (int i=0; i<num2; i++){
        printf("[%d]?",i);
        scanf("%d",&(int_array[i]));
    }
    int sum =0;
    for(int i =0; i<num2; i++){
        sum+=int_array[i];
    }
    printf("result is %d\n", sum);
    free(int_array);
}

} '''코드'''

  • 2018년 02월 09일에 작성됨

조회수 87


1 답변


int* allocate(int n) { int* arr = (int*)malloc(sizeof(int)*n); return arr; }

num2 가 입력받을 수의 갯수죠?

적어주신대로 int_array = allocate(num2); 이 코드를 보면 allocate함수가 반환해주는 값은 int* 자료형이라 함수정의부분에 반환값을 int*로 수정했구요.

malloc함수를 통해 num2의 값만큼 int형 메모리를 할당하고 그 주소값을 (int*)형으로 반환받은 변수가 arr 입니다. 그리고 arr을(배열의 주소값을) return받은 변수가 int_array이구요.

int main(void) { int num2 = -1; int* int_array;

printf("input : "); scanf_s("%d", &num2);
// num2 : 입력받을 수의 갯수

if (num2 <= 0) {
    printf("Bad\n");
}
else {
    int_array = allocate(num2); // int_array에 arr의 주소값이 저장된다.
    for (int i = 0; i < num2; i++) {
        printf("[%d]?", i);
        scanf_s("%d", int_array + i);
    }
    int sum = 0;
    for (int i = 0; i < num2; i++) {
        sum += *(int_array + i);
    }
    printf("result is %d\n", sum);
    free(int_array);
}

return 0;

}

  • 2018년 02월 09일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close