yhs05323   4년 전

코드 처음부분에 배열로 카드에 적힌 수들을 저장할 공간으로 포인터를 선언했을 떄는 런타임 오류가 뜨고 배열로 선언했을 땐 맞았습니다. 가 뜨네요.

런타임 오류코드를 올리겠습니다.

int *r; 이부분을 

int r[100];으로 수정하면 정답처리 됩니다.

왜 포인터로 선언했을 땐 런타임 오류가 뜨나요?

djm03178   4년 전

아무것도 가리키도록 한 적이 없으니 어느 메모리 공간을 가리키고 있을지 모르니 당연히 문제가 됩니다.

포인터에 대해 제대로 공부해보시는 것을 추천드립니다.

yhs05323   4년 전

음... 변수 선언을 하며 트래시 값이 들어가니 괜찮을거라고 생각했습니다. 코드블럭에서 포인터 변수에 트래시 값만 들어있음에도 잘 돌아가서 괜찮을거라고 생각했는데 값을 지정해서 다시 제출해보겠습니다.

djm03178   4년 전

값을 임의로 지정하면 안 되고, 이미 할당된 공간을 가리키게 하거나, malloc을 통해 동적으로 할당을 받은 후에 사용해야 합니다.

yhs05323   4년 전

코드블럭으로 했을 때는 왜 됐을까요?? 안 되는 것도 왠지 궁금하지만 되는것도 왠지 궁금해서요.

djm03178   4년 전

초기화되지 않은 주소가 우연히도 사용 가능한 곳이었을 수도 있고, 아니면 컴파일러나 운영체제가 그런 경우에도 바로 에러가 안 나게끔 조치를 취했을 수도 있고, 이런 건 그냥 무슨 결과가 나와도 이상하지 않습니다.

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