C++(39)
-
[C++] 분할 구현, 분할 구현 문제점
아래 링크 클릭 시 해당 본문으로 이동분할 구현헤더 파일에 함수를 정의했을 때 발생하는 문제1. 함수 중복 문제2. 전역 변수 사용 문제이전에는 하나의 cpp 파일 안에서 함수를 만들고 `main()`에서 함수를 호출하는 방식을 사용했었다.int gInt = 0;// Test() 정의void Test(){ ++gInt;}int main(){ Test(); // Test() 호출 Test(); Test(); int a = gInt; return 0;}그렇다면 분할 구현은 무엇이고 왜 사용하며, 사용했을 때 문제점은 무엇일까?분할 구현• 코드를 편하게 재사용하기 위해 헤더와 파일을 분할해서 선언과 정의를 분리시켜서 작업하는 것• 헤더 파일 (.h) : 함수를 선언하는 곳• cpp 파일 (.cpp) : 헤더..
2024.03.11 -
[C++] 컴파일 과정
컴파일 과정은 총 4단계로 이루어져있다.1. 전처리(Preprocessing) 단계• 전처리기(`#include`, `#define` 등) 매크로들을 처리한다. 2. 컴파일(Compile) 단계• 컴파일 = 번역한다.소스 파일은 이 단계에서 저수준 언어인 어셈블리어로 번역된다. (기계가 해석할 수 있는 기계어로 번역되는 것이 아니다.) 3. 어셈블(Assemble) 단계• 컴파일러가 컴파일 단계에서 번역했던 어셈블리어는 어셈블러에 의해서 다시 번역되고, 이때 기계어로 구성된 목적 파일(Object File)이 만들어진다.아직은 실행가능한 상태는 아니다. 4. 링킹(Linking) 단계• 3단계까지 처리된 모든 파일들을 하나로 연결한다.이 단계에서는 라이브러리들을 연결 시켜주고(ex. 링커가 작성된 헤더 ..
2024.03.08 -
[C++] 구조체(Structure)[C++ vs. C], 구조체 포인터
아래 링크 클릭 시 해당 본문으로 이동구조체컴파일 옵션을 C로 바꾸는 법구조체 포인터구조체(Structure) - C++ vs. C1. C++ 문법• 사용자 정의 자료형(UDDT : User Defined Data Type)이라고도 한다.• 내 맘대로 자료형을 만드는 것 (나만의 자료형)• 기본 문법이 아니기 때문에 내가 짠 코드에서만 적용된다.언어에서 기본으로 제공해 주는 자료형 외에 내 방식대로 새로운 자료형을 만들고 싶을 때 사용한다.// typedef : 타입 재정의typedef struct 구조체명{ 구조체 멤버; // 멤버 : 구성 요소} 구조체변수명; // 세미콜론 꼭 쓰기! 구조체도 모듈화가 가능하다.더 큰 자료형 안에 내가 만든 구조체가 그것의 부분으로 들어가서 점점 확장해 나갈..
2024.03.08 -
[C++] 배열(Array)
배열• 동일한 자료형으로 변수를 한 번에 여러 개를 할당하고 싶을 때 사용하는 자료구조일일이 변수명을 하나씩 선언하지 않고 묶어서 한 번에 선언할 수 있다.• 특징 : 연속적인 메모리 구조배열 문법• `자료형 배열변수명[배열길이] = {배열요소들};`▷ 예시int Array[10] = {}; // Array는 int형 10묶음의 전체 이름이다.배열은 배열에서의 위치를 가리키는 인덱스(index)를 제공한다.index는 0부터 시작한다. ➜ 첫 번째 index = 0• 배열을 빈 중괄호`{ }`로 선언하면 전체 메모리가 0으로 초기화된다. • 배열 공간을 다 채우지 않으면 나머지 공간은 전부 0으로 채워진다. ▷ 예시int Array[10] = { 1, 2, 3, 4, 5 }; // 1, 2, 3, 4..
2024.03.04 -
[C++] 호출 스택, 반복문 vs. 재귀함수[팩토리얼, 피보나치 수열], 꼬리 재귀
아래 링크 클릭 시 해당 본문으로 이동호출 스택(Call Stack)팩토리얼(Factorial)재귀함수1. 팩토리얼 ➜ 반복문2. 팩토리얼 ➜ 재귀함수피보나치 수열(Fibonacci Sequence)1. 피보나치 수열 ➜ 반복문2. 피보나치 수열 ➜ 재귀함수꼬리 재귀(Tail Recursion)호출 스택(Call Stack)• 현재 호출되어 있는 함수들의 메모리 상황을 보여준다.• 프로그래밍하는 데 있어서 어떤 문제점을 추적할 때 쓰인다.디버깅 중, 호출 스택이 보이지 않을 때 : [디버그] - [창] - [호출 스택]로컬 창과 호출 스택 장점• 로컬 창 : 현재 중단점이 걸려있는 지역(로컬)에 존재하고 있는 변수들을 보여준다.• 로컬과 호출 스택을 잘 활용하면 문제점을 빨리 찾을 수 있다.훨씬 복잡한 ..
2024.03.04 -
[C++] 반복문, 반복문 탈출 방법
아래 링크 클릭 시 해당 본문으로 이동반복문(Loop)1. for문2. while문반복문 탈출 방법 (continue, break)반복문(Loop)• 어떤 조건이 완료되기 전까지 코드가 일정 구간 반복(loop)되면서 같은 명령을 수행하게 하는 제어문• 프로그램에서 똑같은 명령을 일정 횟수만큼 반복하기 위해 사용하는 문장• 조건이 참인 동안 계속 반복하고 거짓이 되면 반복문을 끝낸다.초기식, 조건식, 증감식반복자(iterator) : 배열처럼 여러 개의 데이터의 집합으로 이루어진 자료구조를 순회하는 객체1) 초기식• 반복자 초기화로 초기값을 설정한다.• 처음 딱 한 번만 실행된다.• 보통 대입문의 형식이다. 2) 조건식• 반복자의 조건을 체크하여 반복문을 언제까지 실행할 것인지 결정한다.• 결괏값은 참(..
2024.03.03 -
[Visual Studio 2019] 자주 쓰는 단축키(기본 설정) 및 단축키 변경하는 법
아래 링크 클릭 시 해당 본문으로 이동단축키0. 주요 단축키1. 주석2. 여러 줄 선택3. 디버깅단축키 변경하는 법 단축키자주 쓰는 단축키들을 정리해봤다. 내용이 점점 추가될 예정이다. 0. 주요 단축키 및 기타1) 새 항목 추가• `Ctrl + Shift + A` 2) 한 줄 복사 (코드 줄 선택 또는 드래그 후 해당 단축키를 누르면 같은 코드가 한 줄 복사된다.)• `Ctrl + D` 3) 선언된 위치로 이동• 선언된 위치로 가고 싶은 코드 부분을 클릭 후 `F12` 4) 함수 선언에 관련된 목록(함수 파라미터) 보기• 함수 괄호에 커서를 놓고 `Ctrl + Shift + Space` 5) 함수 정의를 바로 만들기• 함수 선언한 부분에 커서를 놓고 `Ctrl` + `+` + `.` → '에서 정의..
2024.03.03 -
[C++] 입출력 (printf(), scanf(), cout, cin)
아래 링크 클릭 시 해당 본문으로 이동C의 입출력 방식printf()scanf()이스케이프 시퀀스형식 지정자C++의 입출력 방식coutcinC 입출력 방식 vs. C++ 입출력 방식C의 입출력 방식헤더 파일// C 방식#include // stdio.h => global namespace// #include : 내가 원하는 다른 기능을 포함시킨다는 의미, 전처리기이다.// stdio : standard input output (표준 입출력)// .h : 헤더 파일(header file)을 의미하는 확장자// C++ 방식#include // cstdio => std라는 namespace`printf()`와 `scanf()`를 사용하려면 `#include `라는 표준 입출력 헤더 파일이 필요하다.pr..
2024.03.03