C++ 10

[따배씨++] 정수형 (Integers)

정수형 (integer, int): 4바이트 영역 형(type) 최소 크기 정수 short 2바이트 int 2바이트 대부분 4바이트 long 4바이트 long long 8바이트 - c++ 표준에서는 최소 크기를 지정하고 있다. 2바이트로는 사용하기에 부족함을 느껴 대부분 4바이트를 이용한다. 실제 몇 바이트로 구분되어 있는지는 사용하는 os와 컴파일러가 결정한다. - int형은 4바이트(32비트)로 2^32가지의 수를 표현할 수 있다. 앞에 1비트는 부호 표현에 사용된다. 0이면 양수, 1이면 음수이다. 예를 들어 short형의 경우 2바이트로 2*8 = 16비트이다. 이진수로 표현하기 때문에 2^16개만큼 표현할 수 있다. 최대값을 체크하기 위해서는 limits 라이브러리를 이용해.. (include ..

C, C++/공부정리 2023.03.19

[따배씨++] 기본 자료형 소개

1바이트 = 8비트 다양한 자료형(char, int 등..)이 있으며 메모리 사이즈가 다 다르다. - signed처럼 기울인 글씨체로 적용된 부분은 생략해서 써도 된다. >> short, unsigned short, unsigned 등.. - 부동소수점을 표현하는 타입은 float, double가 있다. float은 int와 같은 메모리 사이즈(4바이트, 16비트)를 사용한다. double은 8바이트(32비트)이며 더 정밀하게 수를 표현할 수 있다. auto 타입은 컴파일러가 자료형을 결정해준다. 변수 초기화 방법은 세 가지가 있다. 1) int a =123; // copy initialization 2) int a(123); // direct initialization 3) int a{123}; // ..

C, C++/공부정리 2023.03.19

참조와 포인터

참조 - 참조 변수는 어떤 변수의 별칭이라고 생각하면 된다. 예를 들어 Sonny를 Songqiao라고도 부르고 싶다면.. 참조 연산자 &를 이용해 위와 같이 만들 수 있다. - 참조에 대해 주의해야 할 사항 1) 참조에 대해 수행하는 모든 작업은 원본에서도 발생한다. 2) 별칭은 다른 별칭으로 변경할 수 없다. 참조에 의한 전달 - 매개변수를 함수에 전달할 때 값에 의한 전달이라고 한다. 매개변수와 인수는 별개의 변수가 되며, 어느 한 쪽을 변경해도 다른 쪽이 영향을 받지 않는다. 값에 의한 전달로 정의된 함수 내부에서는 함수 외부에 선언된 변수에 접근이 불가능하다. - 참조에 의한 전달을 참조를 사용해 함수에 매개변수를 전달하는 것이다. 이는 같은 메모리 주소를 통해 접근하는 것으로 원본과 사본이 공..

C, C++/codecademy 2023.03.16

클래스와 객체

클래스 - 클래스의 구성 요소를 클래스 멤버라고 한다. 이는 .(점 연산자)를 사용해 클래스 멤버에 액세스 할 수 있다. .length() object.class_member - 멤버 데이터라고 하는 attribute는 클래스의 인스턴스에 대한 정보로 구성된다. - 멤버함수라고 하는 메소드는 클래스의 인스턴스와 함께 사용할 수 있는 함수이다. 일반적으로 (cpp파일과 동일한 이름의 헤더를 만들어 헤더에서 메소드를 선언하고 cpp파일에서 메소드를 정의한다. 클래스 외부에서 메소드를 정의할 때 메소드 앞에 '클래스이름::메소드이름'의 형식을 이용해 클래스를 나타낸다. 예제) 클래스, 객체 사용법 electric_relaxation이라는 객체(인스턴스)를 생성했다. 클래스가 선언된 헤더파일의 모습이다. 함수가..

C, C++/codecademy 2023.03.01

함수 - 범위 및 유연성 (지역/전역범위, 인라인 함수, 오버로드, 템플릿)

전역범위와 지역범위 - 전역범위: 전역범위에서 정의된 변수는 프로그램 어디서나 액세스 할 수 있다. - 지역범위: 함수에서 정의된 변수는 함수 내에서만 액세스 할 수 있다. #include void enter_code(int passcode) { if (passcode == 0310) { std::string secret_knowledge = "https://content.codecademy.com/courses/regex/onyourexcitingjourneylearningtocodeyouwillfindthis.gif"; std::cout

C, C++/codecademy 2023.03.01

vector

vector를 사용하기 위해 #include 를 추가해주어야 한다. vector 선언은 std::vector name; ex) std::vector day; 특정 값으로 만들고 초기화 할수도 있다. std::vector location = {42.63, -73.52}; #include #include int main() { std::vector subway_adult = {800, 1200, 1500}; // Give subway_child some values: std::vector subway_child = {400, 600, 750}; } index 이용해 접근하기 추가 및 제거 - push_back() 을 이용한 추가 : 벡터의 맨 뒤 요소에 추가할 때 이용한다. - pop_back()을 이용한 ..

C, C++/codecademy 2023.02.21

에러

1. 컴파일 타임 에러: 컴파일러에서 오류 발견 - Syntax error(구문 에러): c++ 구문 규칙 위반 시 발생하는 에러 ex) 세미클론(;) 빠뜨림, )}] 괄호 안 맞음 - Type error(타입 에러): 선언한 형식 간 불일치가 있을 때 발생하는 에러 ex) 변수 선언 빠뜨림, 잘못된 타입의 값 저장 2. 링크 타임 에러: 개체 파일을 실행 프로그램으로 결합하려 할 때 발생한 에러 - 컴파일은 되지만 프로그램에서 찾을 수 없는 함수나 라이브러리로 인해 발생하는 에러 ex) 정의되지 않은 함수의 사용, main()이 Main()으로 있는 등 함수명이 맞지 않을 때 3. 런타임 에러: 실행 중인 프로그램을 검사하다가 에러 발견 - 컴파일 타임 에러, 링크 타임 에러가 없으면 실행됨, 컴파일가..

C, C++/codecademy 2023.02.21

포인터

프로그램을 실행하려면 CPU, RAM 등 하드웨어와 같은 컴퓨터 리소스 중 일부를 사용해야 한다. 이중 가장 중요한 것이 프로그램 실행 시 사용되는 임시 메모리 RAM(Random Access Memory)이다. 메모리의 기본 단위는 바이트이고 모든 변수는 몇 바이트의 모음이다. 이때 할당된 RAM 섹션은 프로그램에 필요한 바이트 수의 블록이다. 사진의 메모리 블록에서 모든 바이트에는 16진수로된 주소가 있다. 포인터를 사용해 메모리 바이트에 접근할 수 있다. 변수의 주소를 포함하는 포인터는 해당 변수를 가리킨다고 한다. 변수를 선언하면 연속적인 바이트 블록이 메모리에 예약된다. 변수에 대한 포인터는 이 바이트 중 첫 번째 바이트의 주소이다. int *name; int* name // 데이터유형 *포인터..

C, C++/codecademy 2023.02.19