안녕하세요 stimpack 입니다.!    


오늘은 상수와 변수 , 그리고 함수에 대해 알아보는 시간을 갖도록 하겠습니다.! 


*변수

변수란 무엇일까요 .!? 


변수란 쉽게 말해 데이터를 저장하는 그릇이라고 생각하면 됩니다. 즉 제가 물컵이라고 하면 물컵이 되고 밥 그릇이라고 하면 밥그릇입니다.! 


저장되는 데이터에따라 그 그릇의 역할은 바뀌겠죠!  즉 변할수 있습니다.

 

예를 들어 

제가 int stimpack ; 라고 선언하고 밑에 stim이라고 적으면 비쥬얼스튜디오가 똑똑하게 제가 만든 변수를 알려줍니다.! 


즉 컴파일러에게 내가 사용할 자료형을 선언하고 (int) 제가사용할 그릇 ,즉 변수이름을 지어서 만들어주면 4byte 크기의 메모리가 생기게 되고 


하나의 그릇이기 때문에 우리는 이것을 알기위한 고유의 주소가 필요합니다! 하지만 변수이름을 지어줌으로 써 우리는 주소를 몰라도 되고, 컴파일러만 알


게 됩니다.


그러면 우리는 굳이 주소를 알지 못해도 변수 이름을 선언함으로써 위에 같이 그 이름만 적으면 우리는 언제든지 그 변수에 접근할수 있게 됩니다! 



제가 아까와 같은 예제에 int stimpack 라고 선언하고 , 변수 stimpack의 값을 5라고 정의하였습니다. 


밑에 메모리2라고 적힌 창에 0x001efcd0 이렇게 써있고 cc cc cc cc cc cc cc cc 적혀있습니다.


 0x001efcd0 이게 stimpack의 주소값 입니다!. 너무 길고 어렵네요...나중에 변수를 많이 선언 할수도 있는데 주소를 다 외운다는 것은 어려운 일이겠죠! 


그래서 컴파일러와 약속을 합니다! 내가 변수를 만들면 컴파일러가 주소값을 알고있으라고요. 너무 기니깐..


이전에 자료형에 대해서 정리를 했는데 , 변수를 선언할때 자료형을 선언하고 변수 명을 적어주는 이유가 !! 


 *즉 int (4byte) 만큼의 크기를 가진 , stimpack(변수)를 만들어줘! (변수의 주소는 너가 알고있어!! (0x001efcd0 ) 



그러면 제가 만든 변수에 cc cc cc cc cc  (쓰레기값이라고 합니다 뭐가 들어있는지는 아무도 몰라용)  5라는 값이 정의 (초기화) 됬다고 합니다. 


05 00 00 00 지금 이렇게 빨간색으로 적힌게 제가 자료형의 크기를 int로 했기 때문에 4byte 만큼의 크기가 할당된 것 입니다.

 

**tip) 이것은 디버깅이라고 하는 함수의 오류가 있는지 없는지 확인하는 것입니다. 메모리창은 꼭! 디버그상태(F5누르시면 디버그상태입니다.) 에서 디버그 -> 창 -> 메모리 (art + 6) 입니다. F10을 누르면 화살표가 이동하면서 한줄 한줄 컴파일하게 됩니다. 


주소: 에 반드시 &연산자를 꼭 사용하시고 변수명을 적으셔야 접근합니다.! .



*상수


상수(Constant)는 무엇 일까요.!?


상수는 변수와 다르게 변하지 않고 컴파일러와 내가 알고있는 고정된 정보입니다.


상수는 숫자형상수 , 문자형 상수 , 문자열 상수로 크게 3가지로 나누어 집니다.




*함수 


함수하면 가수 f(x) 님들이 생각나네요.. 죄송합니다  


함수란 쉽게 작은 프로그램이라고 생각하시면 됩니다! 




위에 자판기가 있습니다. ! 저는 커피 물 사이다를 선택할수 있습니다. 


위 자판기를 함수로 표현하면 


음료수 사먹기 (자판기) 

{

돈을 넣는다.

음료수를 고른다.

음료수를 선택한다.

잔돈을 반환한다. 

음료수를 먹는다.  


}


함수명은 자판기!  자판기의 매개변수 인자가 돈이 되고 , 음료수가 결과값 (반환값)이 됩니다! 


(여기에서 함수명을 지어주어야 하는데 함수명을 잘 지어야  다른 프로그래머가 봐도 어떤 기능을 하는지 유추할수 있습니다.!)

이처럼 어떤 특정 기능을 만들기 위해서는 함수 이름이 필요하고 , 어떤 매개 변수를 사용할것인지 명시하고 , 그 다음 작업내용 그리고 그 결과를 


나타내는 결과 값으로 이루어져 있습니다.!



쉬운 예제로 SUM이라는 함수를 만들어 보았습니다.



여기서 함수는 main 과 SUM 입니다. 


우리가 어떤 기능을 하는 프로그램을 만들때 중요한 것은 어디서 부터 시작될지가 중요합니다. 


그래서 우리는 약속했습니다. 


* main 이라고 적은 함수가 시작함수라고 모두와 약속을 한 것입니다!.  

 

좀더 자세한 이해를 위해 디버깅을 하면서 메모리에 접근하여 알아 보겠습니다.


 디버깅을 하면서 어떻게 컴파일러가 함수를 읽는지 보겠습니다.


말했다싶이  main함수먼저 읽습니다.



제가 선언한 stimpack을 보니 아직 쓰레기 값이 들어있는 것을 알수 있습니다.



제가 SUM함수를 호출하였기 때문에 main함수는 (caller 호출자)라고 합니다. 화살표처럼 SUM함수를 보고 컴파일러가 SUM 함수로 매개변수 5와 3을 순차적으로 대입합니다. SUM 함수는 main함수에 부름을 당했기 때문에 (callee 피호출자 )라고 합니다.


SUM함수의 연산을 끝낸 후 그 값을 int stimpack 메모리에 넣어줍니다. 그래서 메모리를 실제로 보면 컴파일러는 자료형이 int이기 때문에 4byte 크기에 stimpack 변수에 접근하여 쓰레기 값에서 연산한 8이라는 값을 초기화 해줍니다.!  



마지막으로 printf 표준입출력 함수를 통해 제가 원하는 문구와 결과가 출력됩니다.! 





+ Recent posts