c언어 변수로 지정한 크기의 배열 선언

조회수 748회
int i;
scanf("%d", &i);
int aa[i];

제가 배열을 이렇게 선언하는 코드를 본 같은데 왜 제가 하면 오류가 날까요?

  • 제대로 실행이 되는데 혹시 메인함수 지정 등의 문제가 있는지 살펴봐주실수 있나요? Eveheeero 2022.5.18 14:04

1 답변

  • 좋아요

    1

    싫어요
    채택 취소하기

    배열은 컴파일 시간에 크기가 고정되어야 해서, int aa[변수];와 같이 선언할 수 없고, int aa[상수]; 형태로 선언해야 합니다.

    따라서 int aa[i];처럼 할수없고, 동적할당을 이용해서 int *aa=malloc(sizeof(int)*i);처럼 해서 사용해야 합니다. 단, i 값이 0보다 작거나 같으면 안됩니다.

    참고로 C99에는 가변길이 배열이라는 것도 있으나 잘 사용되지 않습니다. https://en.wikipedia.org/wiki/Variable-length_array

    • (•́ ✖ •̀)
      알 수 없는 사용자
    • 오호 감사합니당 선태욱 2022.5.17 23:46

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

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

(ಠ_ಠ)
(ಠ‿ಠ)