분류 전체보기(33)
-
[C++] 포인터(Pointer), 포인터 배열
아래 링크 클릭 시 해당 본문으로 이동포인터포인터 배열포인터• 주소를 가리키는(저장하는) 변수• 포인터 변수라고도 한다.포인터라는 개념은 C, C++에 있고 다른 언어에는 없다.• 포인터가 가리키는 곳을 해당 포인터 변수의 자료형으로 해석한다. ex) int 포인터 변수가 가리키는 곳을 int로 해석한다.포인터의 기능• 주소를 가리킬 수 있고 주소를 받는 변수를 선언할 수 있다.• 주소 변수를 이용하여 내가 알고 있는 주소로 접근하고 값을 직접 수정할 수 있다.※ 주소 변수는 다른 것을 저장할 수 없고 주소만 저장할 수 있다.주소메모리 안에 있는 데이터의 위치를 의미하는 값이다.위치값이 필요한 이유위치가 어딘지도 모르는데 아무 데나 넣을 수는 없다.어떤 공간에 값을 넣을 때 그 위치가 어딘지를 알아야 ..
2024.03.12 -
[C++] 운영 체제(OS)
운영 체제(OS)운영체제는 실질적인, 물리적인 영향력을 행사하는 것이 아니라 컴퓨터에 깔려있는 두뇌 같은 것이다.운영체제는 소프트웨어에, pc 기기 자체는 하드웨어에 해당한다. ex) 운동선수신체 능력도 중요하지만 신체운동지능도 중요하다.아무리 신체능력이 월등해도 머리가 별로라면 신체능력을 제대로 활용하지 못할 것이다.신체운동지능은 소프트웨어, 신체 능력은 하드웨어에 해당한다.Visual Studio를 열면 솔루션을 생성하고 하위 폴더로 프로젝트들이 생성된다.프로젝트를 빌드할 때 솔루션 플랫폼이라는 것이 있는데 솔루션은 무엇이고 플랫폼이란 무엇일까?솔루션(solution)쉽게 말해서 여러 개의 프로젝트가 모인 것이다.프로젝트는 프로그램의 실체이다.솔루션을 열었을 때 프로젝트가 있고 프로젝트가 빌드되면 실..
2024.03.12 -
[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