배열의 크기 할당

sleepzzz214 Reply 4 years 26 weeks ago
배열의 크기가 미리 정해지지 않고, 예제처럼 한 줄에 배열의 크기를 받고 배열을 입력받는 방법이 뭔지 모르겠습니다. 뭔가 특별한 방법이 있나요?
withcs2 Reply 4 years 26 weeks ago
컴퓨터프로그래밍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); // 열일한 메모리를 이만 놓아줍시다. } }
sleepzzz214 Reply 4 years 26 weeks ago
감사합니다!