C, C++/codecademy 10

참조와 포인터

참조 - 참조 변수는 어떤 변수의 별칭이라고 생각하면 된다. 예를 들어 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

컴파일과 실행

컴파일: 컴퓨터가 알아듣게 기계어로 번영하는 과정. 기계어(네이티브 코드): 컴퓨터의 CPU에서 컴퓨터 프로그램을 실행하는 16진수 또는 이진 형태의 프로그래밍 언어 - CPU를 통해 컴퓨터의 하드웨어에 직접 소프트웨어 형태로 프로그램 명령을 전달한다. ex) 0xFE (16진수) = 11111110 (2진수) 터미널(터미널 에뮬레이터): 사용자가 컴퓨터나 네트워크 장치에서 처리하는 명령을 실행할 수 있도록 하는 프로그램. -리눅스에서는 GNOME Terminal, Konsole, xterm이 있다. bash: 쉘 또는 명령 언어 인터프리터. shell: 명령어와 프로그램을 실행할 때 사용하는 인터페이스, 커널과 사용자 간의 다리 역할(사용자의 명령을 받아 해석하고 실행시켜줌) [리눅스]셸(Shell)이..

C, C++/codecademy 2023.02.19