jay7211   6년 전

다른 코드를 다 똑같이 해도

2차원 배열을 a[1000][1000] 으로 선언하면 정답이 나오는데

a[m][m]으로 선언한 뒤 m값을 입력으로 받는 식으로 하면 틀리다고 뜨네요.

a[m][m]과 같은 선언도 가능하다고 알고 있는데, 혹시 이 둘의 차이가 있는 건가요? 


yukariko   6년 전

배열을 a[m][m]으로 선언하면 현재 m의 값을 크기로 갖는 배열을 생성하게 됩니다.

그 뒤에 m값이 변해도 배열의 크기는 변함없습니다.

m값을 입력 받은 후, 배열을 선언하시면 됩니다.

자세한내용은 Variable-length array를 검색해 보세요.

csh6103   6년 전

동적 배열 선언은 c++의경우 new 를 이용해서 (c언어라면 malloc) 해야합니다

정적으로 배열 선언의경우 컴파일단계에서 미리 메모리 공간을 확보하므로 m을 입력받아서 동적인 크기의 배열을 만드는게 불가능합니다

yukariko   6년 전

@csh6103

int a[m];  과 같은 코드는 C 표준에 맞는 문법입니다.

다만 C++에선 표준이 아닌데 gcc에서 지원해주고 있습니다.

따라서 m을 입력받아서 m크기에 맞는 배열을 생성하는것은 가능합니다.

csh6103   6년 전

@yukariko

gcc에서 해보니 되긴되는군요


visual studio 에서 할수있는 방법은 없을까요?

yukariko   6년 전

VS는 C++에서 varialbe-length array를 지원하지 않습니다.

https://msdn.microsoft.com/en-...

C에선 가능하니 확장자를 .c로 생성하면 될 것 같네요.

댓글을 작성하려면 로그인해야 합니다.