int size;
scanf(\"%d\", &size);
int array[size];
for(int i=0; i<size; i++)
scanf(\"%d\",&array[i]);
size값입력받고 그만큼 입력받는건데요
int array[size] 이 부분이 밑줄그여요 어떻게 바꿔야되나요
scanf(\"%d\", &size);
int array[size];
for(int i=0; i<size; i++)
scanf(\"%d\",&array[i]);
size값입력받고 그만큼 입력받는건데요
int array[size] 이 부분이 밑줄그여요 어떻게 바꿔야되나요
int *array = new int[size];
ANSI C(C89)에서는 블록(compound statement) 내에서 선언부인 블록의 시작 부분에만 변수 선언을 써야 되고 그 이외에, 그러니까 코드 사이에 변수 선언을 쓸 경우 오류가 발생한다. C99에서는 된다고 하지만 낡은 C 표준인 ANSI C를 지키는 것이 의미가 있는 게 Embedded용 C Compiler는 아직도 ANSI C만 지원하는 경우가 많음. 아두이노, 레고 마인드스톰, 벡칩 등... 그리고 ANSI C에서는 배열 변수를 선언할 때 크기를 반드시 상수로 줘야 됨. C99에서는 매개 변수의 값(인자)으로 쓰는 것까지는 허용하지만... 그래서 입력된 크기대로 배열을 쓰려면 calloc() 함수를 써야됨. 위 댓글의 new []는 C++의 연산자.
그래서 해결 방법은. int array[size];를 우선 int size; 위로 옮기고 int array[size]; 대신에 int *array = NULL;로 변경. 그리고 for 문 위에 array = (int *)calloc(size, sizeof(int)); 줄 추가. 끝.