Programming Language(36)
-
[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 -
[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 -
[C++] 함수[main()], return, void
아래 링크 클릭 시 해당 본문으로 이동함수main()returnvoid함수 동작 방식함수 선언 또는 정의 없이 함수를 호출하면 발생하는 문제함수• 각각의 기능들을 함수라고 한다.• 함수 표현하는 법 : `함수명()`• 기능의 모듈화 : 밑에서부터 천천히 쌓아 올라가는 것작은 별도의 기능부터 큰 기능까지 만들 때, 모듈화 하는 습관을 가져야 한다.• 함수는 여러 번 호출할 수 있다.함수가 여러 번 호출될 때마다 함수가 사용할 만큼의 메모리 영역을 잡고 해제하며, 결과를 반환하고 함수가 종료되는 과정이 반복된다.`main()`• 프로그램을 실행시킨다. = 프로그램의 가장 첫 번째 함수인 `main()`를 호출한다.`return`• 해당 함수의 종료를 의미하며, 함수를 호출한 곳으로 돌아가서 결괏값을 반환한다..
2024.03.03 -
[C++] 메모리 영역, 변수
아래 링크 클릭 시 해당 본문으로 이동메모리 영역1. 스택(stack) 영역2. 데이터(data) 영역3. 힙(heap) 영역4. 코드(code) 영역변수(Variable)1. 지역 변수2. 전역 변수3. 정적 변수4. 외부 변수정적 변수와 외부 변수는 분할 구현에 대해 먼저 알고 공부하는 것이 좋다.참고 링크• 분할 구현메모리 영역프로그램이 실행되려면 먼저 프로그램이 메모리에 로드(load)되어야 하고, 프로그램에서 사용되는 변수들을 저장할 메모리 공간도 필요하다.• 로드(load)CPU에서 빠르게 처리할 수 있게 속도가 느린 저장소(ex. 하드 드라이브 등)에서 속도가 더 빠른 메모리(RAM)로 데이터를 이동하는 작업이다.컴퓨터의 운영체제는 프로그램의 실행을 위해 다양한 메모리 공간을 제공하고 있다...
2024.03.02