sb103601   5년 전

상하좌우 이동마다 각 끝에서부터 순차적으로 합쳐지는 것, 그리고 연쇄적으로 합쳐지지 않게 하였습니다 또한 0일때는 그대로 복사되고 복사되었던 배열은 

0이 되게 다하였습니다 근데 반례를 통과 못하는데 뭐가 문제인지 정말 모르겠습니다  부탁드립니다 일요일시험인데 이것때메 멘탈 나갔네요 ㅠㅠ

seico75   5년 전

일요일시험은 잘 보셨기를...

아마도 temp 가 call by value로 가기를 바라셨던 것 같은데 실제로는 call by reference 로 동작을 하게 됩니다.

파라메터에서 int temp[][21] 이라는 것은 int (*temp)[21] 과 같은 의미입니다. 그러니까 int[21] 을 가리키는 포인터입니다.

int a[21] 일때 a 는 int 포인터로 사용되듯이 int a[20][21] 일때 (일부터 숫자를 다른 것으로 넣었습니다..) a는 int[21] 의 포인터로 사용됩니다.

int temp[][21] 로 넘기면 포인터를 넘기는 것이 되어서 call by reference 로 되게 됩니다.

아래 테스트를 보시면 main에서 temp 값이 바뀌는 것을 볼 수 있습니다.

 https://ideone.com/WRuitc


그러면 배열을 어떻게 call by value 로 넘기는냐... C에서는 힘드네요 ㅠㅠ.

class 로 만들고 복사생성자를 잘 만들거나, 

아니면 수동복사를 하셔야 합니다. 163 라인을 165, 166, 167 라인 전에 하나씩 더 넣어야 하고..

매 함수도 마찬가지여야 할 것 같습니다.


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