c언어 입력 받은 배열 더하기 입니다.
조회수 3719회
입력받은 숫자들의 합을 구하는 프로그램 인데요. 비어있는 함수칸에 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);
}
} '''코드'''
-
(•́ ✖ •̀)
알 수 없는 사용자
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;
}
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력