C++/C++ 베이직

C++ 베이직-(1)

WhNi 2024. 8. 21. 17:06
  • C / C++ 차이점?
    • C는 절차지향적이고, C++은 객체 지향적이다
    • C의 불편한 부분과 비합리적인 부분을 개선하는 목적으로 나온게 C++ 이다.
  • C++ 프로그램의 빌드 과정
    • C++ 라는 언어로 이루어진 프로그램은  크게 세단계로 나뉘어서 빌드 된다. 
    • 전처리 -> 컴파일 -> 링크
    • 전처리지시자
      • # 문자로 시작하며, 헤더파일들의 코드를 가져와서 소스 파일에 삽입하는 역할을 한다.
      • (헤더 파일에서 선언한 변수, 기능들을 cpp 파일이 인식할 수 있도록 삽입하는 것)
      • 흔히 #include 만 알고 있는데 , #ifndef ~ #endif 같은 형식으로 둘러싸면, 특정 소스 내에서 같은 헤더 파일을 여러번 include 하더라도 한번만 include 되게 하는 기능도 있다.
      • 더 간단한건 #pragma once 라는 기능을 사용하면 훨씬 더 간단하게 중복 include를 막을 수 있다. 
    • 컴파일
      • 헤더가 include된 cpp 의 소스코드를 기계어로 번역한다. 번역하고 나면 오브젝트 파일이라는 형태로 변환된다. (해석본이라고 이해하면 쉬울거 같다)
      • 번역하는 과정에서 문법상 이해가 안가면 컴파일러가 에러를 발생시킨다. 이때 무엇이 잘못된 부분을 수정해야 한다. 
    • 링크
      • 이렇게 번역된 오브젝트 파일을 묶어서 우리가 실행할 수 있는 실행 프로그램이 탄생하게 된다.
  • 가장 먼저 콘솔 화면에서 확인할 수 있는 출력 방법은 std::cout 이다. 출력을 원하는 데이터를 넣으면 화면에 출력이 되는 기능이다. 가장 흔한 예시로 
#include <iostream> // 입출력 기능이 있는 라이브러리

int main() // 기본 프로그램 실행 함수
{
	std::cout << "Hello World!"; // <iostream>에 있는 std::cout 기능을 이용해서 "Hello World" 출력

	return 0;
}

가 있다. 실행을 하게 되면 Hello World가 나올 것이다. 

 

  • 출력을 할때, 출력할 메세지의 한 줄이 끝났음을 알리기 위해서 endl;을 붙이는 경우가 있다. 이는 화면에 출력할 수 있는 한줄의 데이터를 모두 출력하고 줄을 바꾸는 기능이다. 한줄의 데이터를 모두 출력하는거라서, 빈 공간의 데이터도 공란으로 출력하는 셈이다. 따라서 극한으로 효율적으로 줄바꿈을 해야 한다면 줄바꿈 기능인 "\n"을 사용하면 된다.

 

 

  • std::cout 이라는 기능은 <iostream>에 있는 기능이다. <iostream>은 입출력을 담당하는 기능들이 있는 라이브러리 이고, 이는 실제로 자주 사용하게 된다. std:: 는 해당 기능을 사용 할때 namespace라는 기능을 쓴건데, 이는 이름이 같은 변수명이나 함수명이 서로 충돌하는 문제를 해결하기 위해 나온 기능이다. 만약 다른 곳에서 cout 이라는 기능을 만들다고 하면 구분이 어렵기 때문에, 특정 라이브러리에서 namespace를 사용하여 구분할 수 있게 된다. 간단한 예시를 보면
#include <iostream> 

using namespace std;

int main()
{
	cout << "Hello World!"; 
	return 0;
}

이렇게 작성해도 프로그램이 실행되는데, std라는 부분을 using의 기능을 써서 명시적으로 선언하면 앞으로 cout은 std::에 있는 기능이라는 것을 선언하는 것이다. 이로써 더 읽기 좋은 코드를 작성할 수 있게 해준다. 

 

 

필요에 따라서 지식을 역으로 활용해보자

 

  •  C++ 프로그램으로 Hello World 라는 것을 화면에 출력하고 싶다.

1. 입출력을 위한 기능이 있는 라이브러리가 전처리 지시자로 필요하다.

2. 프로그램을 기본적으로 실행할 수 있는 main() 구문이 필요하다. -> 프로그램을 실행할떄 가장 먼저 호출되는 시작점

3. std::cout 이라는 기능과 " " 를 통해서 원하는 텍스트를 화면에 출력할 수 있고, endl; 혹은 "\n"을 통해서 줄바꿈을 할수도 있다.

4. using namespace std; 라는 기능을 통해서 cout 으로만 출력이 가능하다.  

5. 컴파일을 통해서 실행 파일이 만들어져야 한다. 

6. 이상없이 "Hello world"가 출력 되어야 한다. 

 

+) 7. 데이터형과 return 타입에 대한 내용

8. CPU-> 메모리 -> 출력장치  과정 - > 컴퓨터가 데이터를 처리하는 과정

CPU가 먼저 RAM 에서 명령어를 가져옴 → 가져온 명령어를 해석하고 실행.-> 실행한 데이터를 출력장치로 보냄

 

9. 메모리 구조 

 

 

내용 좀 더 정리해서 더 자세하게 작성해보자