컴퓨터프로그래밍1에서는 반복문에서 그냥 선언해주는 것만 해도 괜찮습니다. (정적할당)
메모리를 보다 효율적으로 사용할 수 있는 동적할당 버전도 같이 올려드릴게요 이건 이해 못하셔도 됩니다. (자료구조 강의에서 배울거예요)
크기 n 배열에 저장했다가 출력하는 코드는 아래 처럼 만들 수 있습니다.
// 정적할당
#include <stdio.h>
int main(void){
int N, n, i;
scanf("%d",&N);
while(N-->0){
scanf("%d",&n);
int arr[n];
for(i=0;i<n;i++)scanf("%d",&arr[i]); // scanf("%d",arr+i);로 써도 됨. 10주차 강의자료 참조.
for(i=0;i<n;i++)printf("%d ",arr[i]); // printf("%d",*(arr+i));로 써도 됨. 10주차 강의자료 참조
printf("\n");
}
}
// 동적할당
#include <stdio.h>
int main(void){
int N, n, *arr, i;
scanf("%d",&N);
while(N-->0){
scanf("%d",&n);
arr=(int*)malloc(sizeof(int)*n); // arr은 정확히 sizeof(int)*n 바이트의 메모리만 사용할 예정입니다.
for(i=0;i<n;i++)scanf("%d",&arr[i]);
for(i=0;i<n;i++)printf("%d ",arr[i]);
printf("\n");
free(arr); // 열일한 메모리를 이만 놓아줍시다.
}
}