클라이언트/ 서버/ 엔지니어 " 게임 개발자"를 향한 매일의 공부일지

C++ 시작하기 1 : C++의 시작과 C++ 구문 본문

프로그래밍 언어/C++

C++ 시작하기 1 : C++의 시작과 C++ 구문

huenuri 2024. 8. 25. 10:53

오늘부터 C++ 기초 플러스로 본격적인 C++ 공부를 시작해본다. 1장은 C와 C++ 언어의 역사와 철학 등을 소개하고 있는데, 이 부분은 C 언어 학습할 때 정리했으므로 생략하겠다.
2장에서는 이러한 내용을 학습하게 된다. 이 다음에는 함수가 있지만 그 부분은 다음 포스트에 이어서 정리해보려고 한다. 이 내용만 해도 굉장히 많은 것 같다.

 

1. C++의 시작

  • main() 함수
  • C++ 주석문
  • C++ 전처리기와 iostream 파일
  • 헤더 파일 이름
  • 이름 공간
  • cout을 이용한 C++의 출력
  • C++ 소스 코드의 모양

2. C++ 구문

  • 선언 구문과 변수
  • 대입 구문
  • cout의 새로운 사용법

 

1. C++의 시작

간단한 건축물을 지을 때에도 기초를 다지고 뼈대를 세우는 것이 일의 첫 순서이다. 기초와 뼈대가 튼튼하지 않으면 나중에 세부적인 구조물을 설치하는 데 어려움을 겪게 된다.
컴퓨터 언어를 배우는 것도 이와 같다. 프로그램의 기본적인 구조부터 확실하게 알아야 하며, 그리고 나서 루프나 객체와 같은 세부 구조를 기본 구조 위에 세울 수 있다.

하나의 메시지를 출력하는 간단한 C++ 프로그램을 만들어보자.
C++은 대문자와 소문자를 구별한다.

 

1번 예제 : myfirst. cpp

#include <iostream>                             // 선행처리 지시자
int main()                                      // 함수 머리
{                                               // 함수 몸체의 시작
    using namespace std;                        // 정의 가시화
    cout << "C++의 세계로 오십시오.";           // 메시지 출력
    cout << endl;                               // 새로운 행 시작
    cout << "후회하지 않으실 겁니다!" << endl;  // 또 다른 메시지 출력
    return 0;                                   // main()을 종료
}                                               // 함수 몸체의 끝

 

C에서의 입력과 출력

C++에서 소스 코드 파일 첫머리에 #include <stdio.h> 행을 넣으면 C 언어의 printf(), scanf() 및 기타 표준 입출력 함수들을 사용할 수 있다.


 

Main() 함수

 

함수 머리는 이 함수를 프로그램의 다른 부분과 연결하는 고리 역할을 하고, 함수 몸체는 그 함수가 처리하는 동작을 컴퓨터에게 지시하는 역할을 한다.
컴퓨터에게 내리는 지시를 구문이라고 하는데, C++에서 모든 구문은 세미콜론(;)으로 끝나야 한다.

 

인터페이스 역할을 하는 함수 머리

함수는 다른 함수에 의해 호출된다. 이때 함수 머리는 호출 함수와 피호출 함수의 인터페이스를 나타낸다. 함수 이름의 앞부분을 함수 리턴형이라고 한다. 이것은 피호출 함수가 호출 함수로 다시 넘겨주는 정보의 흐름을 나타낸다.
함수 이름 뒤에 있는 괄호 안의 부분을 매개변수 리스트라고 한다. 이것은 호출 함수가 피호출 함수로 넘겨주는 정보의 흐름을 나타낸다.

  • 리턴값 : 다른 함수에 의해 호출된 함수는 자신ㅡㄹ 호출한 함수에 값을 리턴할 수 있음
    괄호 안에 비어 있는 것은 main() 함수가 어떠한 정보도 전달받지 않는다는 것을 뜻한다.
  • 매개변수 : 하나의 함수에서 다른 함수로 전달되는 정보

int main() : main() 함수가 자신을 호출한 함수로부터 어떠한 정보도 전달받지 않지만, 그 함수에게 정수값을 리턴한다.

 

 

이름이 반드시 main()이어야 하는 이유

C++ 프로그램에서는 main() 함수가 반드시 하나 있어야 하기 때문이다. 모든 프로그램은 main() 함수로부터 실행을 개시한다. 프로그램에 main() 함수가 없으면 완전한 프로그램이 아니다.
windows 프로그램에서 동적 링크 라이브러리(DLL) 모듈을 작성하는 경우는 예외이다. DLL 모듈은 독립된 프로그램이 아니므로 main()이 필요 없다.


 

 

C++ 전처리기와 iostream 파일

 

C++의 일반적인 입출력기능을 사용하려면 다음 두 행을 프로그램에 넣어야 한다.

 #include <iostream>
  using namespace std;
  • 전처리기 : 컴파일하기 전에 소스 파일에 대해 미리 어떤 처리를 수행하는 프로그램
  • #include 전처리 지시자 : iosteam 파일의 내용을 프로그램에 추가하라고 지시
    • i : 입력, o : 출력

 

헤더 파일 이름

 

C++ 컴파일러는 많은 헤더 파일을 제공하는데 .h로 끝남

 

이름 공간

iostream.h 대신에 iostream을 사용할 때, 프로그램이 iostream의 정의를 사용할 수 있게 하려면 이름공간 지시자를 사용해야 한다.
이를 using 지시자라 한다. C++ 컴파일러의 표준 구성 요소인 클래스, 함수, 변수는 std라는 이름 공간 안에 담겨진다. 이와 같은 일은 .h 확장자가 없는 헤더 파일들 안에서 일어난다.

std::을 붙이지 않고 using namespace std;를 통해 std 이름 공간에 들어있는 모든 이름을 사용할 수 있다.

 

cout를 이용한 C++의 출력

cout << "C++의 세계로 오십시오.";

<< 표시는 구문이 그 문자열을 cout에 전달한다는 것을 뜻한다. << 표시가 나타내는 방향이 정보의 흐름을 상징한다.


 

2. C++ 구문

아래 예제는 두 종류의 새로운 구문이 들어 있다. 하나는 변수를 선언하는 선언 구문이고, 다른 하나는 변수에 값을 대입하는 대입 구문이다.

 

2번 예제 : carrots.cpp

// 하나의 변수를 사용하고 출력한다

#include <iostream>

int main()
{
    using namespace std;

    int carrots;            // 정수 변수를 선언한다

    carrots = 25;           // 변수에 값을 대입한다
    cout << "나는 당근을 ";
    cout << carrots;        // 변수의 값을 출력한다
    cout << "개 가지고 있다.";
    cout << endl;
    carrots = carrots - 1;  // 변수의 값을 변경한다
    cout << "아삭아삭, 이제 당근은 " << carrots << "개이다." << endl;
    return 0;
}

 

선언 구문과 변수

 

선언 구문은 정보를 저장할 기억 공간의 형태를 지정하고, 그 위치가 어디인지 말해주는 꼬리표를 제공한다.

int carrots;

 

이 구문은 하나의 정수를 저장할 수 있는 기억 공간을 프로그램이 사용할 예정이라고 선언한다. 그러면 컴파일러는 이를 위한 기억 공간을 대입하고, 그 위치가 어디인지 말해 주는 꼬리표를 붙이는 작업을 수행한다.

  • 모든 변수는 사용하기 전에 미리 선언해야 함

 

대입 구문

기억 위치에 어떤 값을 대입한다.

cout의 새로운 사용법

cout은 문자열뿐 아니라 정수도 출력할 수 있다. 정수 25와 문자열 “25”는 완전히 다른 것이다. cout이 int 형의 수를 출력하기 전에 문자형으로 변환한다.
C++의 삽입 연산자(<<)는 자신의 뒤에 오는 데이터형이 무엇이냐에 따라 자신이 취할 동작을 결정한다.


 

2장 1~2장 학습을 마치고

분량이 많아서 여기서 끝어야 할 것 같다. 다 알고 있는 개념이라고 생각했는데 정리해보니 그렇지 않았다. 많이 쓰고 들어보았기에 사용할 수는 있으나 설명을 해보라면 하지 못할 것 같다.
이건 진짜로 아는 게 아니다. 잘 아는 개념이라고 해서 쉽게 보지 않고 한번 더 살펴보며 기억해두는 게 필요하겠다.

이제 main() 함수에 대해서 선언구문과 대입 구문이 무엇인지 잘 알게 되었다.