xyorhzhf   5년 전

프로그래밍 초보입니다..

코드에서 주석친 printf문을 넣으면 배열에  제대로 0부터 N까지 순서대로 숫자가 들어가는데

printf문을 빼버리고 배열에 숫자를 넣으면 1번배열부터 적용이 됩니다. 왜 이렇게 되는건지 이해가 안되네요..

결과)

5

1 2 3 4 5

2028442890 1 2 3 4

djm03178   5년 전

이 프로그램이 잘 돌아가면 그게 더 이상합니다.

12번째 줄은 arr[i]가 아니라 &arr[i]여야 합니다.

xyorhzhf   5년 전

&는핸드폰에서 옮겨적다가 실수로 빼먹었네요.. 배열에 잘 들어가는지 확인하려고 테스트중인데 주석친printf문을 빼버리면 arr[1]부터 입력이 들어가는데 그 이유를 모르겠네요.

djm03178   5년 전

코드에는 문제 없는 것 같고, 셋 중 하나입니다. 컴파일러에 버그가 있거나, 입력을 잘못 주셨거나, 코드를 수정할 때 다른 곳을 잘못 수정하신 것 중 하나입니다.

https://ideone.com/DotF3k

https://ideone.com/fmVMRy

xyorhzhf   5년 전

감사합니다! 시간 빌때 조금이라도 공부하려고 핸드폰에 프로그램 깔아서 사용중인데, 코드가 같은걸로 보아하니 프로그램에 버그가 있는것같네요!

pann4590   5년 전

아마도 int 형의 arr 배열을 선언할 때, 배열 크기를 초기화하는 부분(int arr[length])이 문제가 있다고 보입니다.

length 는 변수이기 때문에 배열 크기 선언에 사용될 수 없습니다.

djm03178   5년 전

variable-length array는 C99에서 표준으로 지원합니다. C11에서는 선택적으로 있습니다. 만일 저걸 지원하지 않는다면 아예 컴파일을 거부해야 맞는 거고, 컴파일은 되는데 동작이 안 된다면 컴파일러에 문제가 있다고 할 수 있습니다.

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