2798번 - 블랙잭
코드 처음부분에 배열로 카드에 적힌 수들을 저장할 공간으로 포인터를 선언했을 떄는 런타임 오류가 뜨고 배열로 선언했을 땐 맞았습니다. 가 뜨네요.
런타임 오류코드를 올리겠습니다.
int *r; 이부분을
int r[100];으로 수정하면 정답처리 됩니다.
왜 포인터로 선언했을 땐 런타임 오류가 뜨나요?
아무것도 가리키도록 한 적이 없으니 어느 메모리 공간을 가리키고 있을지 모르니 당연히 문제가 됩니다.
포인터에 대해 제대로 공부해보시는 것을 추천드립니다.
음... 변수 선언을 하며 트래시 값이 들어가니 괜찮을거라고 생각했습니다. 코드블럭에서 포인터 변수에 트래시 값만 들어있음에도 잘 돌아가서 괜찮을거라고 생각했는데 값을 지정해서 다시 제출해보겠습니다.
값을 임의로 지정하면 안 되고, 이미 할당된 공간을 가리키게 하거나, malloc을 통해 동적으로 할당을 받은 후에 사용해야 합니다.
코드블럭으로 했을 때는 왜 됐을까요?? 안 되는 것도 왠지 궁금하지만 되는것도 왠지 궁금해서요.
초기화되지 않은 주소가 우연히도 사용 가능한 곳이었을 수도 있고, 아니면 컴파일러나 운영체제가 그런 경우에도 바로 에러가 안 나게끔 조치를 취했을 수도 있고, 이런 건 그냥 무슨 결과가 나와도 이상하지 않습니다.
댓글을 작성하려면 로그인해야 합니다.
yhs05323 4년 전
코드 처음부분에 배열로 카드에 적힌 수들을 저장할 공간으로 포인터를 선언했을 떄는 런타임 오류가 뜨고 배열로 선언했을 땐 맞았습니다. 가 뜨네요.
런타임 오류코드를 올리겠습니다.
int *r; 이부분을
int r[100];으로 수정하면 정답처리 됩니다.
왜 포인터로 선언했을 땐 런타임 오류가 뜨나요?