프로그래밍 공부

전문가를 위한 C++정리 73

카테고리 설명
  • 1.2.1 포인터와 동적 메모리 동적 메모리는 컴파일 타임에 크기를 정할 수 없는 데이터를 이용할 수 있게 해준다. 거의 모든 프로그램은 동적 메모리를 어떤 형태로든 이용하게 된다. 스택과 힙 C++ 애플리케이션이 사용하는 메모리는 스택(stack)과 힙(heap) 두가지로 나누어진다. 스택 메모리는 쌓여있는 카드에 비유할 수 있다. 가장 위에 놓인 카드는 프로그램의 상태를 나타내는데, 보통 현재 실행중인 함수에 관한것 이다. 현재 실행 중인 함수의 로컬 변수는 모두 가장 위에 놓인 카드, 즉 제일 위 스택에 위치한다. 만약 현재 실행 중인 함수 foo()가 또 다른 함수 bar()를 호출한다면 새로운 스택 프레임 이 생성되고, bar() 함수를 호출할 때 넘겨진 파라미터가 foo()의 스택 프레임에서 ..

  • 1.1.12 타입 추론 타입 추론(type Infernerce)는, 컴파일러가 표현식으로부터 타입을 자동적으로 연역해내도록 한다. 타입추론을 위해 두개의 키워드 auto와 decltype이 추가되었다. C++14부터는 decltype(auto)로 조합하여 사용할 수도 있다. auto 키워드 auto 키워드는 네 가지 전혀 다른 의미를 가지고 있다. 첫번쨰 사용 예는, 어떤 변수의 타입을 컴파일 타임에 자동적으로 연역해내는 것이다. auto x = 123; 위의 x는 자동적으로 int타입으로 변환된다. 그러나, int대신 auto를 타이핑 했을 뿐, 그다기 효용이 없다. 하지만, 복잡한 타입의 경우, 효과가 있다. 예를들어, 함수 getFoo() 의 리턴타입을 추론하기 힘들다고 가정하면, 리턴값을 변수에 ..

  • 1.1.11 함수 프로그램의 크기가 커지면, main() 함수에 모든 코드를 담을 수 없다. 프로그램을 이해하기 쉽게 하려면, 코드의 일부를 의미있는 단위로 쪼개어, 즉 분해(decompose)하여 함수로 만들어야 한다. 다른 코드에서 함수를 이용할 수 있게 하려면, 함수를 선언해야 한다. 함수가 특정 소스 파일 안에서만 사용된다면, 보통 그 파일 안에서 선언과 정의를 모두 하게 된다. 반면 다른 모듈의 소스파일을 이용한다면, 함수 선언은 헤더파일에 위치시키고, 함수정의는 소스 파일에 두게된다. void myFunction(int i, char c); 리턴타입이 void 임으로 호출자에 아무런 결과를 돌려주지 않는다. 함수 파라미터로 int와 char이 선언되어있기 때문에, 파라미터를 무조건 입력해야 선..

  • 1.1.10 루프(반복문) 컴퓨터는 태생적으로 같은 작업을 반복하는데 능하다. C++에서는 while루프, do/while루프, for루프, 구간지정for루프 등, 네가지 형태의 반복문을 지원한다. while루프 while루프는 주어진 표현식이 참인 동안 while블록의 코드가 실행되게 한다. 다음 코드는 this is silly 를 다섯번 출력하는 코드이다. int i = 0; while ( i < 5) { std::cout

  • 배열은 같은 데이터 타입의 값들을 일렬로 나열한 것 이다. 각 항목은 배열의 위치로 구분된다. C++에서 배열을 선언할 때는 배열의 크기를 명시적으로 설정해야 한다. 배열의 크기로 값이 변할 수 있는 변수를 줄 수는 없다. 배열의 크기는 상수여야 한다. 또는 상수 표현식(constant expression)[constexpr]을 배열 크기 선언에 이용할 수 있다. int myArray[3]; myArray[0] = 0; myArray[1] = 0; myArray[2] = 0; 위와같이 3개의 정수값을 담는 배열을 선언하고, 배열의 항목을 모두 0으로 초기화한다. 이러한 초기화 방식은 다른 방법이 있는데, 반복문을 사용해서 초기화 할 수있고, 또는 초기화 매커니즘을 사용해서 초기화 할 수 있다. int m..

  • 1.1.8 논리 산출 연산자 이미 논리 산출 연산자로서 > 연산자를 사용하였다. > 연산자는 두 값을 비교하여 왼쪽이 크면 참을 아니라면 거짓을 리턴 한다. 모든 조건 연산자는 위와같은 패턴으로 동작하는것을 기억하자. 조건 연산자의 결괏값은 항상 true 또는 false이다. 연산자 설명 사용 예 = 왼쪽 값을 오른쪽 값과 비교하여 작음, 작거나 같음, 큼 , 크거나 같음에 따라 참, 거짓을 반환한다. if(i < 0) { std::cout