백발 청년 햄버거 메뉴

목차

    안녕하세요. 백발청년 입니다.

    홍정모 교수님의 C++강의, 따배씨++의 강의노트 포스팅을 시작합니다.

     

    5부 : 주석을 잘 다는 방법 https://whiteheadyouth.tistory.com/183

    4부 : 프로그램의 구조 https://whiteheadyouth.tistory.com/181

    3부 : 코딩하다 막혔을 때는? https://whiteheadyouth.tistory.com/170

    2부 : 솔루션, 프로젝트 관리 https://whiteheadyouth.tistory.com/161

    1부 : 통합개발환경의 기본적인 사용법 - 윈도우 비주얼 스튜디오 https://whiteheadyouth.tistory.com/155

    0부 : 홍정모 교수님의 따배씨++ 무료로 인강 듣는 방법 https://whiteheadyouth.tistory.com/89 

     

    오늘의 수업 주제는 변수 입니다.

    그래서 제목도 변수와의 첫 만남 이네요.

     

     

    객체 object : 객체지향 프로그래밍이라는 말을 들어본 적이 많을 것입니다.
    참고로 자바는 모든것이 객체이다 라는 말을 합니다. 
    현실에서 무언가가 존재한다는 것은 물리적으로 어떤 공간을 차지하는 물체, 실존하는 문제 입니다.
    컴퓨터 안에서는 존재한다 안한다는 무엇으로 구분할까요?
    컴퓨터는 CPU와 메모리로 일을 합니다. 정보는 메모리에 저장되구요. 메모리에 저장이 되어 있는 정보를 바로 객체라고 부릅니다.
    의미 있는 정보를 메모리에 저장하게 되는데 저장된 것을 객체라고 부를 수 있습니다. 메모리에 위치를 가지고 있다에 강조를 합니다.


    변수 variables : 객체를 다루고 싶은데,(1을 더하기도 하고 복사도 하고 곱하기도 하고 싶어...) 객체는 메모리에 있는데 담겨있는 그걸 사용하기 위해서는 이름이 있어야겠지용... 수학에서 이야기하는 변수처럼 기능을 하지만, 내부적으로 작동할 때는 메모리에 담겨있는 객체의 이름 정도로 부를 수 있겠습니다.
    이를테면 아파트 주소라고 하면 변수는 숫자로 된 주소 대신 문자로 된 이름을 붙여주는것입니다. 사람이 인식할 수 있는 이름을 달아주는것인데요, 이를테면 301호는 백발이, 이런식으로 말이죠.

    Left-values 과 Right-values
    - 메모리 주소를 프로그래머가 직접적으로 접근할 수 있느냐...


    초기화initialization와 대입 assignment

    초기화를 안 했을 때의 문제점.

     

     

     

    강의노트와 주석을 함께 사용해 보았습니다.

    사진에서 보이는 바와 같이, int x = 123; 이라는건, x라는 정수형 변수를 선언했는데, x는 객체이고, 그래서 x는 숫자를 담을 수 있는 공간을 메모리에 차지하고 있어요. int 는 integer 곧 정수입니다. 즉, x는 123과 같은 정수 하나를 담을 수 있는 크기 입니다.

    int y;

    y = 123;

    y라는 정수형 변수를 선언하고, y에 123이라는 숫자를 할당합니다.

    y = 123; 에서 "=", 등호는 같다는 의미가 아닙니다. y = 123 이라는건 y라는 변수에 123을 대입한 것이죠.

    y라는 변수 이름이 가리키고 있는 메모리 공간에 123이라는 정수를 저장하는 것 입니다.

     

    std::cout << y << std::endl;

    y라는 변수를 출력하고, endline 즉, 줄바꿈을 하라고 하네요.

     

    std::cout << &y << std::endl;

    y라는 변수의 16진수 값을 나타내줍니다. (&y : 16진수로 표현된 y의 주소 입니다.)

     

    위의 코드를 실행하면 위와 같이 실행됩니다.

    123이라는 y의 값과 함께, 0024FC0C라는 16진수로 표현된 y의 주소 값이 보이네요.

     

    디버그와 릴리즈의 차이는 지난번 강의에도 언급했듯이, 속도 차이가 꽤 많이 납니다.

    디버그보다 릴리즈가 빨라서 보통 배포용은 릴리즈로 배포합니다.

     

    빌드를 누를때, 솔루션 하나에 여러가지 프로젝트가 있으면 전체가 다 빌드됩니다. 이부분 참고해야 하구요.

    warning C4700 : 초기화 되지 않은 'x' 지역 변수를 사용했습니다.

    기초적인 오류는 반드시 잡는게 좋습니다.

    지금은 x라는 변수를 선언했는데, x의 값을 초기화 시키지 않아서 생긴 문제입니다.

    그래서 항상 변수를 선언하면 초기화를 진행 해야 합니다.

     

     

    C++이 어렵다는 인식을 가지게 하는 주범 : 런타임 에러

     

    "너 뭐하니?" 하고 물어보는 무시무시한 에러 입니다. 그러나 이건 디버그에서만 나타납니다.

    릴리즈모드에서 초기화 안하고 빌드하면 에러메시지는 뜨지만, 디버그 하지 않고 실행하면 실행은 된다는 무시무시한 이야기.

     

    변수는 항상 초기화 해야 합니다.

     

     

    int x(123); 을 통해 초기화를 진행했고,

     x에 5라는 정수를 대입했으니

    std::cout << x << std::endl; 을 실행하면 5가 출력되겠네요.

     

     

    프로그래머는 예측 불가능한 일은 하지 않도록 하는게 좋다고 합니다.

    C언어를 먼저 배우는 사람들은 초기화를 안하는 경우들이 많습니다.

    그러나 요즘은 반드시 초기화를 해주는 것이 좋습니다.

     

     

     







     

    댓글
    위쪽 화살표
    도움이 되었다면 공감(하트)과 댓글을 부탁드려요.
    //스크립트는 script로 수정해주세요.//