해커스쿨.Section 17 Section 17 스택에 저장되는 값들 살펴보기 변수가 스택에 어떻게 저장되는지 살펴보기 위해 아래와 같은 코드를 살펴보자 a -> b -> c-> d 순서로 변수를 선언했기 때문에 a부터 스택에 쌓일것이다. 아래 결과를 살펴보자 예상했던 대로 가장 먼저 선언한 a의 값인 1이 가장 높은 주소에 저장되어있는 것을 확인할 수 있다. 이번에는 int형이 아닌 자료형이 선언될 때 어떻게 선언되는지 살펴보자 우선 1바이트의 크기를 가진 char형을 선언한 코드는 아래와 같다. 결과를 보면 4바이트 할당되어있고, 7이란 값이 들어가 있기는 하다 그러나 07 앞에있는 eb 83 04는 무엇일까? 우리가 프로그래밍을 하다보면 초기화를 안하고 사용하는 경우가 있다 이러한 변수에 값을 넣지 않은채로 출력하게 되면 이상.. Study/system 7년 전
해커스쿨.Section 15 Section 15 스택(Stack) 영역 조금 더 깊게 알기 스택은 LIFO(Last In First Out)이라는 후입선출형 구조를 가지고 있다. 말그대로 마지막에 들어온 것이 먼저 나가는 형식이다. 예를 들어 설명하면 프린터기에 종이를 차곡차곡 쌓아넣으면 가장 마지막에 올라간 종이부터 사용하는 것과 같다고 보면 된다 보통 스택은 위와같이 그리며 아래쪽이 높은주소이다. push를 통해 데이터를 채워나가며 pop을 통해 데이터를 제거해나갈 수 있다. 스택의 위치를 지칭하는 용어는 TOP과 BOTTOM이 있는데 TOP 경우 스택의 최상단. 즉, 가장 최근에 쌓인 데이터를 가리키며 BOTTOM의 경우 가장 아래부분을 가리킨다 TOP과 BOTTOM이 같을 경우 더이상 데이터가 없음을 뜻한다. 스택이 높은주소.. Study/system 7년 전
해커스쿨.Section 8 Section 8 함수의 호출과 복귀 다음은 사각형의 넓이를 구하는 함수 코드이다 get_area라는 사용자 정의함수를 만들었다.이는 main의 x와 y를 인자로 받는다. main이 먼저 실행되기 때문에 10번라인부터 실행되다가 15번 라인에서 get_area를 호출한다 이 때, 현재 위치로 다시 돌아오기 위해 리턴어드레스를 저장해놓는다. get_area 함수가 실행된 후 return을 만나 리턴 어드레스를 참조하여 다시 원래의 코드로 돌아온다. 아래는 실행결과를 표로 정리한 모습이다.main 에서는 높은 주소부터 순서대로 들어가기 때문에area -> y -> x순서이다.함수인자는 반대순서로 들어간다.x -> y순서이다. 함수 안에서 선언한 area 변수는 왜인지 함수인자와 멀리 떨어져 있다. 사이에 있.. Study/system 7년 전