분류 전체보기 79

참조와 포인터

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

클래스와 객체

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

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

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

함수

C++에는 이미 표준 라이브러리의 일부로 생성된 함수들이 많다.예를 들어 , 헤더를 추가해 이용할 수 있다. #include #include int main() { // This seeds the random number generator: srand (time(NULL)); // Use rand() below to initialize int the_amazing_random_number = rand()%29; std::cout 추가를 통해 rand함수 이용했다.0~28의 랜덤한 수를 출력하는 코드이다. 선언과 정의- 선언: 함수의 이름, 반환 형식, 매개변수(함수의 인수이며 이를 입력 값으로 이용하는 경우 매개변수를 사용한다) return문은 함수 실행에서 마..

vector

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

에러

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

조건문, 연산자

if (조건){ ~~~ ; } 형태 조건이 참이면 { } 안이 실행되고 아니면 넘어간다. 조건이 참이면 if문의 do something 부분이 실행하고 아니면 else문 실행한다. 조건이 3개 이상일 때 이용한다. 조건이 정수 형식일 때 이용된다. 각각의 case 마지막 부분에 break를 추가해준다. 예제) 몸무게 계산하기#include int main() { std::cout > weight; std::cout > x; switch(x){ case 1: weight *= 0.78; break; case 2: weight *= 0.39; break; case 3: weight *= 2.65..

빠른 CPU를 위한 설계 기법

CPU 속도를 빠르게 하려면?컴퓨터 부품들은 ‘클럭 신호’에 맞춰 일사불란하게 움직인다.CPU는 ‘명령어 사이클’이라는 정해진 흐름에 맞춰 명령어들을 실행한다.클럭 속도단위: [Hz]헤르츠[Hz]: 1초에 클럭이 반복되는 횟수 1초에 한 번 똑딱이면 1Hz 무조건 클럭 속도가 빠르다고 좋은 것은 아니다.필요 이상으로 클럭을 높이면 발열이 심해진다.클럭 속도를 늘리는 것 말고 CPU를 빠르게 하려면?코어 수를 늘리는 방법 (듀얼 코어, 멀티 코어 등)스레드 수를 늘리는 방법 (멀티 스레드) 코어전통적으로 명령어를 실행하는 부품은 원칙적으로 하나만 존재하지만 오늘날 CPU에는 명령어를 실행하는 부품이 여러 개 존재‘명령어를 실행하는 부품’을 코어라는 용어로 사용코어를 여러 개 갖고 있는 CPU를 ‘멀티 ..

명령어 사이클과 인터럽트

명령어 사이클: CPU는 명령어를 수행하는데 일정 주기를 반복한다. 이를 명령어 사이클이라고 한다.메모리에 저장된 명령어를 실행하려면? 메모리에 저장된 명령어를 인출해 CPU로 가져온다. (인출 사이클) - 인출한 것을 실행한다. (실행 사이클) 이 과정을 반복한다. 인터럽트의 종류에는 동기 인터럽트, 비동기 인터럽트가 있다. 비동기, 하드웨어 인터럽트 비동기 인터럽트가 없다면 작업이 완료되었는지 계속해서 확인을 해주어야 한다. 입출력장치가 CPU에 인터럽트 요청 신호를 보낸다.항상 실행사이클이 끝나고 플래그 레지스터에서 인터럽트 플래그를 확인한다. 하지만 모든 인터럽트를 인터럽트 플래그로 막을 수 있는 것은 아니다. 하드웨어 고장이나 정전 같은 경우가 있을 수 있기 때문이다.Maskabl..