나무 숲

매개변수로서의 스택 사용 본문

Career

매개변수로서의 스택 사용

wood.forest 2017. 4. 11. 21:41
예는 스택으로 들었는데 큐도 마찬가지입니다.

전달인자로 스택을 넣었는데 이상해요! <<저의 상황이었습니다.





두 코드의 결과값입니다. 차이가 보이시나요..?


왼쪽 그림에서는 분명 스택을 비웠는데도 불구하고 스택의 값이 출력됩니다.
반면 오른쪽 그림에서는 스택을 비웠기에, 원소가 출력되지 않는 모습입니다.

makeStackEmpty(stack<int> &s)
바로 참조자&를 통해서 해당 함수 내에서 매개변수로 전달된 값이 변하느냐, 변하지 않느냐의 차이입니다.

그리고 또한 중요한 점.. &을 사용할 때엔 변수.함수 형태입니다.
포인터 *를 사용할 때엔 변수->함수(또는 데이터) 입니다.
자세히 설명할 기회가 있다면 그때 다시한번 하는걸로..




제가 printStack 함수에서 참조자를 사용하지 않은 이유는 정말 말 그대로 내용을 참조만 해서 스택 내 원소들을 확인하고 싶었기 때문입니다.
이처럼 스택 내 원소 확인 시에는 참조자를 사용하지 않고 스택을 비우는 함수 등을 작성할 시에는 참조자를 사용해야 합니다.
스택은.. 배열이 아니라는 것...!!!을 잊으면 안된다고!!!!! 저를 다시금 채찍질합니다..


추가적으로+)
함수 내부에서 스택의 원소를 수정(삭제/수정)하고싶지 않다면 const를 사용하시고
void makeStackEmpty(const stack<자료형> &변수명)
함수 내부에서 스택의 원소를 수정(삭제/수정)하고싶다면
void makeStackEmpty(stack<자료형> &변수명)
const를 사용하지 않습니다.



728x90
반응형
Comments