c++ 시작
1. c++
: c언어 여러가지 기능 추가한 언어
c++ = c언어의 절차 지향적 특징 + class 사용하는 객체 지향적 특징
2. c++ 프로그래밍
프로그래밍 : 소스 파일 -> 실행 파일
1) 소스 파일(source file) 작성
: c++문법에 맞게 논리적으로 작성된 프로그램
원시 파일이라고 하기도 함
c++을 통해 작성된 소스 파일의 확장자는 대부분 .cpp
2) 선행처리기(preprocessor)에 의한 선행 처리
: 소스 파일 중 선행처리 문자(#)으로 시작하는 선행처리 지시문의 처리 작업
선행처리 작업은 선행처리기에 의해 처리됨
코드를 생성하는 것이 아닌, 컴파일 하기 전 컴파일러가 작업하기 좋도록 소스를 재구성해주는 역할만을 함
3) 컴파일러(compiler)에 의한 선행 처리
: 컴퓨터는 0과 1로 이루어진 이진수로 작성된 기계어만 이해 가능
소스 파일을 컴퓨터가 알아보는 기계어로 변환하는 과정을 compile이라고 함
이런 컴파일은 C/C++ 컴파일러로 수행되고 컴파일이 끝나 기계어로 변환된 파일을 오브젝트 파일(oject file)이라 함
오브젝트 파일의 확장자는 .o 나 .obj가 됨
4) 링커(linker)에 의한 링크
: 컴파일러에 의해 생성된 오브젝트 파일이 운영체제와의 인터페이스를 담당하는 시동 코드(start-up code)안 가짐
표준 라이브러리 파일도 없음
하나 이상의 오브젝트 파일 + 시동 코드 등등 을 합쳐 하나의 파일로 만드는 작업 => link
링크는 링커에의해 수행되고, 링크가 끝나면 하나의 새로운 실행 파일이나 라이브러리 파일 생성됨
여러개의 소스 파일을 작성하여 최종적으로 링크를 통해 하나의 실행 파일로 만드는 것을 컴파일이라 함
5) 실행 파일(executable file)의 생성
: 위 과정에서 생성된 파일
실행 파일의 확장자는.exe
3. 간단한 C++ 프로그램
#include 문
#define 문
int main()
{
명령문;
return 문;
}
4. iostream
1) C++ 표준 입출력 클래스
: c++은 객체로 표현되서, 입출력 담당하는 수단도 객체임
c언어의 printf나 scanf처럼 c++ iostream 헤더 파일에서 표준 입출력 클래스 정의함
c++에서는 cout 객체로 출력을, cin 객체로 입력 작업 수행
c언어처럼 printf, scanf 함수로 입출력 수행 가능
(1) cout
: 다양한 데이터를 출력하는데 사용되는, c++에서 미리 정의된 출력 스트림을 나타내는 객체
문법
std::cout << 출력할데이터;
삽입 연산자(<<)는 오른쪽에 위치한 출력할 데이터를 출력 스트림에 삽입
이렇게 삽입된 데이터는 스트림을 통해 출력 장치로 전달되어 출력됨
(2) cin
: cin 객체는 다양한 데이터를 입력받는데 사용되는 C++에서 미리 정의된 입력 스트림을 나타내는 객처
문법추출 연산자(>>)를 통해 사용자가 입력한 데이터를 입력 스트림에서 추출하여, 오른쪽에 위피한 변수에 저장
이때 cin객체는 자동으로 사용자가 입력한 데이터를 오른쪽에 위치한 변수의 타입과 동일하게 변환시켜 줌
문법
std::cin >> 저장할변수;
예시
#include <iostream>
using namespace std;
int main()
{
int age;
cout << "니 몇살이고!? : ";
cin >> age;
cout << age << "살 이다!" << endl;
return 0;
}
- 결과
니 몇살이고!? : 30405
30405살 이다!
여러분의 나이를 입력해 주세요 : 스른므흔다슷
0살 이다!
age에 정수가 아닌 문자열을 입력하면 숫자가 아니라는 의미로 0을 전달함
+) c언어 표준 입출력 함수와의 차이점
c언어 - printf(), scanf() / c++ - cout>> , cin<<
- 삽입 연산자(<<)와 추출 연산자(>>)가 데이터의 흐름을 나타내서 좀 더 직관적!
- c++ 표준 입출력 객체는 데이터의 타입을 자동으로 변환 시켜 줘서 더욱 편리하고 안전!
'프로그래밍 언어 > C++' 카테고리의 다른 글
[c++] 타입 (0) | 2022.09.02 |
---|---|
[c++] c++을 시작하며 (0) | 2022.09.01 |