✔소스코드 기본 구조 main 함수 C++ 프로그램의 초기 진입점으로 제일 먼저 호출된다. > 모든 C++ 프로그램은 main 함수를 가진다. return 함수 종료를 의미하며, 함수를 호출한 곳으로 결과를 반환한다. main 함수 반환 시 프로그램이 종료된다. > - 전처리기, 선행처리기(Preprocessor) : 컴파일러가 코드를 컴파일하...
✔변수 데이터를 저장하기 위해 프로그램에 의해 이름을 할당받은 메모리 공간 값이 변할 수 있다. 변수 이름 생성 규칙 영문 대소문자, 숫자, 언더스코어(_)로만 구성됨 숫자로 시작될 수 없음 공백 포함 불가능 C++에서 미리 정의된 키워드 사용 불가
✔연산자 C++은 연산을 위해 다양한 연산자를 제공한다. 산술 연산자 사칙연산을 다루는 연산자. 두 개의 피연산자를 가지는 이항 연산자. -> 피연산자들의 결합 방향은 왼쪽에서 오른쪽 | 산술 연산자 | 설명 | |:----:|:----:| | + | 왼쪽의 피연산
✔조건문 주어진 조건식의 결과에 따라 별도의 명령을 수행하도록 제어하는 명령문 (1) if문 (2) if / else문 (3) if / else if / else문 (4) switch문 if문 조건식의 결과가 참이면 주어진 명령문을 실행하고, 거짓이면 아무것도 실행하
메모리에 저장된 일련의 연속된 문자(character)들의 집합큰따옴표("")를 사용해 표현되는 문자열해당 문자열은 이름을 가지고 있지 않고, 내용도 변경할 수 없기 때문에 상수라고 표현함💡 C++은 문자열의 길이에 제한을 두지 않는다.문자형 배열로 선언된 문자열 변
string 클래스에 정의된 문자열 관련 작업을 할 때 사용하는 메소드.string 클래스에서 제공하는 대표적인 문자열 처리 함수(1) length() 메소드, size() 메소드(2) append() 메소드(3) find() 메소드(4) compare() 메소드(5)
하나 이상의 변수를 그룹지어 새로운 자료형으로 정의하는 것으로,기본 타입만으로는 나타낼 수 없는 복잡한 데이터를 표현할 수 있다.큰따옴표("")를 사용해 표현되는 문자열해당 문자열은 이름을 가지고 있지 않고, 내용도 변경할 수 없기 때문에 상수라고 표현함💡 C++은
✔분할 구현 헤더 파일과 cpp 파일을 분리해서 구현하는 것 헤더 파일에서는 함수 선언만! 실제 구현은 cpp 파일에서 한다. cpp 파일은 헤더 파일을 참조한다. 💡 main()에서 위 함수를 사용하고 싶다면, 해당 파일에서 func.h 파일을 include하면
(a) 스택 영역(b) 데이터 영역특징)프로그램 시작 시 생성, 프로그램 종료 시 해제(c) 코드 영역 (읽기 전용)(d) 힙 영역(1) 지역변수👉 (1) : 스택 영역 사용(2) 전역변수(3) 정적변수 (static)(4) 외부변수 (extern)👉 (2), (3
## ✔<span style="color:#B22222">⭐**포인터**⭐</span> ### 포인터 변수(=포인터) - 메모리의 주소를 저장하는 변수 - 선언 시 초기화되지 않는다. 초기화되지 않은 값은 쓰레기 ```cpp [선언] 자료형* 포인터변수명 ex) in
void 함수가 반환할 게 없을 경우 반환 타입을 void로 쓴다. 리턴이 필요 없다. ✔void 포인터 주소를 저장할 수 있는 포인터 변수는 맞지만, 원본으로 접근할 때 특정 데이터 타입으로 해석하지 않는다. 👉 따라서 어떤 타입의 변수 주소든 저장할 수 있다. 👉 역참조, 주소 연산이 불가능하다. -> 어떤 데이터 타입 변수의 주소든 저장할 수...
메모리 영역스택데이터힙ROM(코드)char 자료형타입 : 정수형크기 : 1btye\-> char 값을 아스키 코드로 해석하여 문자를 표현할 수 있다,\-> 데이터 값은 65로 그대로지만, 문자로 해석하겠다고 하는 순간 해당 데이터 값에 대응하는 문자로 표현된다. "45
wcslen() : 문자열 길이 알려주는 함수문자열 길이를 계산하기 위해 배열의 시작 주소를 인자로 넘겨줘야 한다. ex) 배열명 szName문자열의 길이만 반환받고, 문자열 데이터를 수정할 의도가 없음을 const로 명시했다.(szName에 초기화된 문자열은 RO
✔구조체 포인터 구조체를 함수의 인수로 사용할 경우의 문제점 : 구조체의 각 멤버 값이 복사되어 함수로 전달된다. 이 때 구조체의 멤버가 많다면 함수를 호출할 때마다 많은 멤버들을 복사하게 되어 호출이 지연되고 성능 저하가 발생할 수 있다.
메모리 영역스택\-> 지역 변수 힙\-> 동적 할당데이터\-> 전역/정적/외부 변수 ROM (CODE/DATA)정적 할당: 스택, 데이터 영역은 함수가 호출될 때/프로그램이 실행될 때 메모리 할당이 정해진다.동적 할당: Heap 영역은 프로그램 실행 도중에 실시간
배열 개수를 선언할 때에는 변수를 사용할 수 없다.함수의 지역 변수들은 함수 호출 시에 스택 메모리가 할당된다. 그런데 배열의 크기를 변수로 설정하면 코드가 실행되기 전까지는 변수의 값을 확신할 수 없기 때문에 컴파일러가 메모리 크기를 파악하여 할당할 수가 없다.\->
연결 리스트는 비연속적인 선형 자료구조이다.리스트의 노드는 데이터 필드와 링크 필드로 구성되어 있고, 링크 필드는 포인터를 통해 다음 노드의 메모리 주소를 저장한다.\-> 헤드 노드(첫 번째 노드)를 가리키는 헤드 포인터의 값만 알고 있어도 모든 노드에 접근할
✔함수 포인터 : 함수를 가리키는 변수로, 함수의 주소를 저장한다. -> 함수의 주소 전달할 때 함수 이름 앞에 & 붙이거나, 함수 이름 자체가 주소이므로 함수 이름만 적어도 됨 Sort(&s1, BubbleSort); 함수 포인터 선언 -> 함수 포인터 pFunc
가변배열: 힙 메모리 영역에 동적할당해서 데이터 넣어줬었음배열 시작주소, 최댓값, 한곗값 필요클래스 외부에 멤버 공개 안 함 (private)(💡접근 제한자 명시 안 하면 기본적으로 private)생성/소멸자는 public(private이면 컴파일러가 호출 못 함)동
✔함수 템플릿 : 함수를 찍어내는 틀 아래와 같이 이름은 같고 인자 타입이 다른 함수 오버로딩을 하는 경우 -> 두 인자를 더한 값을 반환하는 기능은 동일한데, 인자 타입이 달라질 때마다 새로 정의해야 해서 불편하다.. 👉 💡 함수 템플릿으로 해결 문법 위의
C++ 기준으로 구조체랑 클래스의 차이는 없다. (디폴트 접근제어자 제외)아래에서 리스트는 클래스로, 노드는 구조체로 만든 기준은간단한 기능 : 구조체, 복잡한 기능: 클래스 라고 임의로 정했기 떄문임리스트는 클래스로, 노드는 구조체로 만들기로 한다.데이터 들어오는 게
클래스 내부에 선언한 기능에 접근하려면 범위 지정 연산자(::)를 사용한다.\-> 비슷한 개념인 namespace말 그대로 이름 공간.네임스페이스를 생성하고 전역변수를 만든 뒤, 메인에서 전역변수를 정의하려고 하면 오류가 뜬다.\-> main 밖에서 선언되었으니 전
이전에 만들었던 가변배열 클래스에 iterator 구현하기반복자는 inner class 니까 , 배열 클래스 내부에 클래스 만들기T\* 이 포인터가 8바이트고 int형 멤버변수가 2개 있으니까 이 클래스는 총 16바이트.\-> 근데 내부 클래스에도 8바이트짜리 변수가
열거형이라고 부름타입 이름 나열하면, 컴파일러는 0부터 연속된 숫자로 받아들임a == 2숫자를 직접 지정하는 것도 가능하다.숫자를 지정한 다음부터는 지정했던 수에서 연속된 숫자로 나열된다(?)❗ enum은 다른 enum의 이름과 겹칠 수도 있다.\-> 이러면 다른 클래
데이터 삽입이 복잡한 대신 탐색 시 간편함탐색 기능 구현하기근데 구현하려면 반복자 필요함.
C++11 부터 추가된 기능헤더 : <algorithm>사용 예시출력

TIL 시리즈 정리하다가 글 몇개를 날려버렸다 TIL이 아니게 됐지만 그냥 이어서 써야지 뭐 VS2022 C++ 기준 비주얼스튜디오에서 scanf 사용시 오류 발생 시도한 방법 ❌ scanf_s 사용하기 : VS에서는 에러가 해결되지만, 백준, 코딩테스트 등 다른