본문 바로가기
TIL

WIL (22.1.23)

by imagineer_jinny 2022. 1. 24.

WIL (Weekly I Learned)

 

이번주에 배운 것

  • 컴퓨터의 작동 원리
    • CPU, 주기억장치, 보조기억장치, 그래픽 카드
    • CPU가 운영체제를 실행시키고 싶을 때 일 하는 방식
      • 보조기억장치에 있는 운영체제 프로그램을 주기억장치로 복사시킨 후 일을 함
    • 운영체제의 핵심
      • 하드웨어와 응용 프로그램 중개, 리소스 관리 등

 

  • C++ 출력, 입력, 참조, 문자열, 생성자/소멸자, std::array
    • 출력: 출력형식 지정할 때 조정자를 쓰기도 한다
    • 입력
      • scanf가 왜 위험하지? 경계검사를 하지 않아서!
      • 입력 버리기 : clear, ignore 각각 언제써? 
        • clear: 스트림이 좋지 않은 상태가 되었을 때다시 스트림을 아무 문제 없는 상태로 만들 때(문제 있는 bit가 설정되었을 때 그걸 그냥 지워줄 때)
        • ignore: 파일 끝에 도달하거나 지정한 수 만큼 문자를 버릴 때
      • 입력 버리기: get(), getline() 차이?
        • 둘다 한줄 읽어오는데 입력스트림을 남기냐(get), 버리냐(getline)차이
    • 참조
      • 왜 써?
        • C++에서 포인터 연산이 없어도 될 때, 주소 변경이 없어도 될 때 안전하게 쓰기 위해 참조 씀
        • 참조가 포인터보다 안전함
          • 포인터는 NULL 넣을 수 있는데 참조는 NULL 못 넣어서 값이 일단 유효함
          • 참조는 우리가 소유하지 않은 메모리 장소를 가리킬 수 없음
      • 값에 의한 호출, 참조에 의한 호출, 포인터
      • 참조란 별칭이다.
      • NULL이 될 수 없고 초기화중에 반드시 선언되어야 함
    • 문자열
      • std::string 클래스 
        • char line[256];
          cin.getline(line,256);
        • 위 코드를 보면 두가지 문제가 있는데 1. 아무것도 읽지 못했을 때, 2. 한 줄에 문자가 256자 이상일 때(버퍼가 충분히 크지 않을 때)
        • 대안: std::string 클래스를 이용한 문자열은 길이가 증가할 수 있음. 배열 길이에 관해 고민할 필요가 없음
        • 대입 / 덧붙이기
        • 문자열 합치기
        • 비교 연산자 : A<B, AB<AC (사전상의 순서를 비교)
        • size(), length(), c_str()
        • string 속의 한 문자에 접근하기
    • 생성자/소멸자
      • 왜 써?
        • Memory Leak 최소화 하기 위해. 성능적으로 놓치는 것 없게 하기 위해
        • RAII : Resource Acquisition Is Initialization
        • 객체가 생성(생성자)/소멸(소멸자)될 때 자동으로 실행됨
      • 초기화 리스트 
        • 생성자에서 필드를 간단하게 초기화하는 방법
        • 왜 써?
          • 생성과 동시에 초기화되어야 하는 변수들(const 선언 변수, 레퍼런스 변수) 때문에
    • C스타일 배열, std::array
      • 배열: 같은 종류의 데이터가 연속적으로 저장되어 있는 자료 구조
      • 배열 특징
        • 인덱스 사용하여 원하는 원소에 곧바로 접근 가능
        • 캐시 지역성 
        • 크기 분별
        • 스택 메모리 영역에 할당 : 너무 큰 크기 배열 선언하면 스택 오버플로 에러
      • std::array :  C++에서 C 스타일 배열을 대체하는 고정 크기 컨테이너 (C++11)
        • std::array 특징
          • 배열의 크기를 정확하게 알 수 있음. array::size()
          • 단점
            • 항상 스택 메모리를 사용(대용량 저장 용도 사용 불가)
            • 배열 크기 명시적으로 지정해야 함
            • std::array보다 std::vector가 많이 사용됨

 

차주에 진행할 것

  • 컴퓨터 작동 원리 끝내기
  • C++ ~5주차까지 : 개체지향 프로그래밍 + 정적(static) 멤버 함수/변수 까지
  • C ~5주차까지 : ~커맨드 라인 인자(command line argument)까지
  • 알고리즘: ~재귀 까지 
  • Effective C++: ~Chapter 4
  • VR Project 애니메이션 적용

 

 

앞으로 진행할 것

  • 프로그래밍 면접 이렇게 준비한다

 

 

'TIL' 카테고리의 다른 글

WIL (22.02.06)  (0) 2022.02.06
WIL (22.1.30)  (0) 2022.01.31
코딩테스트를 마치고  (0) 2021.09.12
[ML-Agent를 활용한 머신러닝] MummyRay  (0) 2021.08.17
[ML-Agent를 활용한 머신러닝] Soccer  (0) 2021.08.17

댓글